细节
我想利用mysql的空间扩展,所以我试图使用bindParam将经度和纬度存储在数据类型POINT的mysql表中。不幸的是,我不断收到错误 SQLSTATE[23000]:完整性约束违规:1048 列“位置”不能为空。
我检查了经度和纬度是否有值。所以问题出在我的代码上,但我看不出我做错了什么。
这是我正在使用的代码。
$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 将经度和纬度插入 mysql 表(使用 POINT 数据类型)?
变化
根据 AgreeOrNot 的回答,实现此目的的方式略有不同
$location = 'POINT(' . $latitude . " " . $longitude . ')';
$sql = "INSERT INTO my_geodata (location) VALUES (PointFromText(:location))";