Php CodeIgniter错误1064:纬度和经度查询

Php CodeIgniter错误1064:纬度和经度查询,php,mysql,codeigniter,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` )

我有一个在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
选择*,
(6371*acos(弧度(21.161908))
*cos(弧度(`latitude`))
*cos(弧度(`longitude`)-弧度(-86.85152790000001))
+正弦(弧度(21.161908))
*sin(弧度(`lation`))作为距离
从(u)结果
距离小于30的
按距离排序
限制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);
$this->选择(“*,(6371*acos(弧度(21.161908))*cos(弧度(纬度))*cos(弧度(经度)-弧度(-86.85152790000001))+sin(弧度(21.161908))*sin(弧度(纬度))作为距离”);
$this->db->having('distance<30');
$this->db->order_by('distance');
$this->db->limit(20,0);
但是有了这个,我得到了这个错误:

错误号码:1064 您的SQL语法有错误。。。对于靠近“*”的用户,(6371*acos(弧度(21.161908))*cos(弧度(纬度))

有人知道这个错误吗


注意:在此之前,我实现了一个先前的查询。

为什么不这样尝试呢

$this->db->query("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");
$this->db->query(“选择*,
(6371*acos(弧度(21.161908))
*cos(弧度(`latitude`))
*cos(弧度(`longitude`)-弧度(-86.85152790000001))
+正弦(弧度(21.161908))
*sin(弧度(`lation`))作为距离
从(u)结果
距离小于30的
按距离排序
限值0,20”);

您应该使用
$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);
$this->db->选择(*,(3959*acos(弧度($lat))*cos(弧度(lat))*cos(弧度(lng)-弧度($lng))+sin(弧度($lat))*sin(弧度(lat)))作为距离);

$this->db->having('distance适合我)

$this->db->select("SELECT *,ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $Lat ) ) + COS( RADIANS( `latitude` ) )* COS( RADIANS( $Lat )) * COS( RADIANS( `longitude` ) - RADIANS( $Long )) ) * 6380 AS `distance`");
            $this->db->from('_results');
            $this->db->where("ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 < 5");
            $this->db->orderby('distance');
            $this->db->limit(20,0);
            return $this->db->get()->result();
$this->db->select(“select*,ACOS(SIN(RADIANS(`lation`))*SIN(RADIANS(`Lat`))+COS(RADIANS(`lation`))*COS(RADIANS(`longitude`)-RADIANS($Long))*6380作为`distance`);
$this->db->from(“u结果”);
$this->db->其中(“ACOS(SIN(弧度(`latitude`))*SIN(弧度(`latitude`))+COS(弧度(`latitude`))*COS(弧度(`latitude`)-$fLon))*6380<5”);
$this->db->orderby('distance');
$this->db->limit(20,0);
返回$this->db->get()->result();
函数lat\u long($lat,$long){
$query=$this->db->query(“选择*,(6371*acos(弧度($lat))*cos(弧度(`latitude`))*cos(弧度(`latitude`)-radians($long))+sin(弧度($lat))*sin(弧度(`latitude`))作为距离表的距离,距离限制为0,20,距离小于30次”);
返回$query->result();
}
“在此之前,我实现了一个先前的查询。”-您能详细说明一下这是什么意思吗?
 function lat_long($lat,$long){
  
 $query = $this->db->query("SELECT *, ( 6371 * acos ( cos ( radians($lat) ) * cos( radians( `latitude` ) ) * cos( radians( `longitude` ) - radians($long) ) + sin ( radians($lat) ) * sin( radians( `latitude` ) ) ) ) AS distance FROM table HAVING distance < 30 ORDER BY distance LIMIT 0 , 20");     
 return $query->result();

  }