php - 代码点火器错误 1064 : Latitude and Longitude query

标签 php mysql codeigniter

我有这个在 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/

相关文章:

php - MySQL – 我应该使用 last_insert_id() 吗?或者是其他东西?

python - DataFrame to_sql 使用错误的字符集进行替换

javascript - 在 JavaScript 中调用 Controller 方法来加载 View - CodeIgniter

php - Mysql第1行语法错误

javascript - 如何使用多个数组插入数据 php javascript mysql

mysql - mysql中的STR_TO_DATE解析

mysql - 使用另一个表中的值插入数据库行

php - 如何查询多个变量以在 Codeigniter 的 View 中显示

php - 如何使用codeigniter从表中获取数据

php - 为什么 PHP 不再解析 “BRST” 日期?