MySQL(マイエスキューエル)

【MySQL】位置情報(座標)をGeometry型で扱う方法

【MySQL】Geometry型で位置情報(座標)を扱う

MySQLで位置情報(座標)を扱う場合には、Geometry型という便利な型があります。

Geometry型のカラムには、GeomFromTextでデータを作成して保存することになり、
以下の様な形式でSQLクエリを組み立てます。

INSERT INTO テーブル名 (カラム名) VALUES (GeomFromText('POINT(経度 緯度)'));
※経度と緯度の間は、半角スペースで区切ります。

例えば、
テーブル名「tbl_location」、カラム名「latlng」とすると、このようなSQLクエリを実行することになります。

INSERT INTO tbl_location (latlng) VALUES (GeomFromText('POINT(139.767125 35.681236)'));

ここまでは問題ないですね。

少しはまったのが、プリペアドステートメントでデータを挿入する場合です。
せっかくなので、メモ書き程度に情報を残しておきます。

【PHP】プリペアドステートメントでGeometry型の項目にデータ挿入

PHPでプログラムを組む場合、SQLインジェクション対策の為、上記のようなSQLでそのまま挿入するのではなく、
プリペアドステートメントで挿入されている方も多いと思います。

その場合には、
Geometry型の項目も当然それに合わせて設定します。

今回であれば、以下のようなコードでGeometry型の項目に値を挿入することが可能です。

$lat = "139.767125"; //経度
$lon = "35.681236"; //緯度

$query = "INSERT INTO tbl_location (latlng) VALUES (GeomFromText(:latlng));"
$stm = $pdo->prepare($query);
$stm->bindValue(":latlng", "POINT($lat $lon)", PDO::PARAM_STR);

この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. ドメインについて
  2. WP:WordPress(ワードプレス)
  3. URL設計(URLデザイン)
  4. URL「ディレクトリ名」と文字アンダースコア(_)とハイフン(-)
  5. SEO対策(外部ファイルの読み込み)
  6. URL リダイレクト
  7. インデックスされない
  8. 内部対策は必要?
  9. CMS(シーエムエス)
  10. SEO業者は必要?

Twitter

アーカイブ

PAGE TOP