【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);
この記事へのコメントはありません。