php – 如何使用PDO bindParam将点数据插入到mysql中?

细节

我想使用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))";

解决方法:

请注意,参数化查询不是(简单)字符串替换.在您的代码中,您的查询参数将放在一个字符串文字中,该文字将保持不变.

试试这个:

$location = 'POINT(' . $latitude . " " . $longitude . ')';
$sql = "INSERT INTO my_geodata SET location = PointFromText(:location)";

相关文章

https://www.osgeo.cn/qgis-tutorial/overview.html https:...
设计方案是工程建设最关键的环节,也是影响城市规划的基本因...
BIM与GIS的区别与联系http://www.bimcn.org/cjwt/2018111516...
成功有感之给年轻人的10个忠告1、努力工作要努力,随随便便过...
鉴于陆地多边形为ShapelyMultiPolygon,我想找到代表例如多边...
背景与宣言传统的GISC/S开发已经很被别人不屑了,在时代的洪...