在我的网络服务中,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))");
我该如何解决这个问题?
答案 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”)