詳細
mysql の空間拡張機能を利用したいので、bindParam を使用して POINT データ型の mysql テーブルに経度と緯度を格納しようとしています。残念ながら、SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'location' cannot be null というエラーが表示され続けます。
経度と緯度に値があることを確認しました。したがって、問題は私のコードにあるはずですが、何が間違っているのかわかりません。
これが私が使用しているコードです。
$location=$latitude." ".$longitude;
$sql = "INSERT INTO my_geodata SET location = PointFromText('POINT(:location)')";
//INSERT INTO my_geodata SET location = PointFromText('POINT(-41 12)');
try
{
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':location', $location, PDO::PARAM_STR);
$stmt->execute();
$dbh = null;
}
catch(PDOException $e)
{
echo $error=$e->getMessage();
}
質問
私は何を間違っていますか?PDO と bindParam を使用して、経度と緯度を (POINT データ型を使用する) mysql テーブルに挿入するにはどうすればよいですか?
変化
AgreeOrNot の回答に基づいて、これを達成するための少し異なる方法は次のとおりです。
$location = 'POINT(' . $latitude . " " . $longitude . ')';
$sql = "INSERT INTO my_geodata (location) VALUES (PointFromText(:location))";