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

PHP

【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);

WordPress短期学習プログラム

関連記事

  1. Security(セキュリティ)

    PHP

    PHP脆弱性対応 フォームの改行コード、復帰コードの取り扱い

    サイト構築時、大概の場合お問合せフォームを設置すると思いますが、…

  2. Database(DB:データベース)

    データベース

    DBのバックアップ

    弊社も今日で仕事納めです。休暇中に何かあると恐いの…

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

    データベース

    Error in processing request エラーコード:403 エラーテキスト:For…

    phpMyAdminの画面から不要になったデータベースを削除しようとし…

  4. システムエラー

    PHP

    【PHP】ZIP圧縮で「Uncaught Error: Class 'ZipArchive' not…

    【PHP ZipArchive】ZIPへの圧縮でエラー…

  5. PHP(ピー・エイチ・ピー)

    PHP

    【PHP5.3】マジッククオートの設定は、オフにしておきましょう!

    マジッククオートについて最近はPHP7が主流になってき…

  6. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】Smartyで全角英数字を半角英数字に変換

    今日は、久しぶりにSmartyを触りました。といっ…

最近の記事

  1. Technology-Connection-Net
  2. ドメインにハイフンを使うのは日本人だけ?
  3. SSL(HTTPS)
  4. ドメインについて
  5. WP:WordPress(ワードプレス)
  6. ドメイン(domain)
  7. JPドメイン
  8. 高速(スピード)
  9. ブログアクセス
  10. 高速(スピード)
PAGE TOP