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

Twitterはこちら >>

関連記事

最近の記事

  1. レンタルサーバ:おすすめの共用サーバ
  2. アフィリエイト
  3. VPSサーバー
  4. ブログのネタ探し
  5. プログラミング
  6. SSLとは
  7. 常時SSL通信設定後にやっておくべきこと
  8. 常時SSL通信設定方法
  9. htaccessとは
  10. WordPress

Twitter

ダッチ@職業ブロガー兼プログラマー
@gatsu0000

  • リモートやってみて分かったこと。 会社って意外と仕事に集中できていなかった。 当たり前か。会社って、別に落ち着ける空間じゃないですからね。
    about 2日 ago via Twitter Web App

アーカイブ

PAGE TOP