我有这个在 phpMyAdmin 中有效的查询
SELECT *,
( 6371 * acos ( cos ( radians(21.161908) )
* cos( radians( `latitude` ) )
* cos( radians( `longitude` ) - radians(-86.85152790000001) )
+ sin ( radians(21.161908) )
* sin( radians( `latitude` ) ) ) ) AS distance
FROM _results
HAVING distance < 30
ORDER BY distance
LIMIT 0 , 20
我正尝试在 CodeIgniter 中执行:
$this->select("* , ( 6371 * acos ( cos ( radians(21.161908) ) * cos( radians(latitude) ) * cos( radians( longitude ) - radians(-86.85152790000001) ) + sin ( radians(21.161908) ) * sin( radians( latitude ) ) ) ) AS distance ");
$this->db->having('distance < 30');
$this->db->order_by('distance');
$this->db->limit(20,0);
但是有了这个我得到了这个错误:
Error Number: 1064 You have an error in your SQL Syntax... to user near '*, (6371 * acos ( cos ( radians(21.161908) ) * cos( radians(latitude) )
有人知道这个错误吗?
注意:我之前实现了一个查询。
最佳答案
您应该使用 $this->db->select()
而不是 $this->select()
。
我有一个像这样的相同类型的查询
$this->db->select("*, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance");
$this->db->having('distance <= ' . $miles);
$this->db->order_by('distance');
$this->db->limit(20, 0);
工作正常。
关于php - 代码点火器错误 1064 : Latitude and Longitude query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488990/