PHP bindParam变量错误

PHP bindParam variable error

在我的网络服务中,我遇到了 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))");

我该如何解决这个问题?

分别尝试两个坐标

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);

可能是因为函数 Point() 需要两个像这样的数字参数:

Point(1, 2)

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

Point("1, 2")

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