PHP bindParam变量错误

时间:2016-10-10 19:19:47

标签: php web-services pdo bindparam

在我的网络服务中,bindParams出现问题。这是我的代码:

$stmt = $this->db->prepare("SELECT data FROM sless WHERE ST_CONTAINS(data.area, Point(:query))");
$stmt->bindParam(':query', $queryText, PDO::PARAM_STR);

:query变量未正确调整此代码。

当我回复$queryText时,它会完美地给出29.029087,40.990361。但是在代码中它没有用。顺便说一句,当我写29.029087,40.990361纬度和经度而不是变量:query时,我的代码完美运行。这是代码:

$stmt = $this->db->prepare("SELECT data FROM sless WHERE ST_CONTAINS(data.area, Point(29.029087,40.990361))");

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

分别尝试两个坐标

list($lat, $lng) = split(',', $queryText);
$stmt = $this->db->prepare("SELECT data FROM sless WHERE ST_CONTAINS(data.area, Point(:lat,:lng))");
$stmt->bindParam(':lat', $lat, PDO::PARAM_STR);
$stmt->bindParam(':lng', $lng, PDO::PARAM_STR);

答案 1 :(得分:0)

很可惜,因为函数 Point()需要两个这样的数字参数:

  

点(1,2)

你只给出一个像这样的字符串参数:

  

点(“1,2”)

http://dev.mysql.com/doc/refman/5.7/en/gis-class-point.html