我有这个 SQL 查询:
SELECT *, ( 3959 * acos( cos( radians(41.832100) ) * cos( radians( latitude ) ) * cos( radians( longitude) - radians(-87.789597) ) + sin( radians(41.832100) ) * sin( radians( latitude ) ) ) ) AS distance FROM cities_extended HAVING distance < 10 ORDER BY distance LIMIT 0 , 5;
当我通过 phpMyAdmin 运行它时,它可以工作。但是我尝试通过$this->db->query();使用 codeigniter 来实现它。功能。
像这样:
$nearby_cities = $this->db->query("SELECT city,state,zip, ( 3959 * acos( cos( radians($latitude) ) * cos( radians( latitude ) ) * cos( radians( longitude) - radians($longitude) ) + sin( radians($latitude) ) * sin( radians( latitude ) ) ) ) AS distance FROM cities_extended HAVING distance < 25 ORDER BY distance LIMIT 0 , 3;");
我明白了:
Error Number: 1582
Incorrect parameter count in the call to native function 'radians'
SELECT city,state,zip, ( 3959 * acos( cos( radians() ) * cos( radians( latitude ) ) * cos( radians( longitude) - radians() ) + sin( radians() ) * sin( radians( latitude ) ) ) ) AS distance FROM cities_extended HAVING distance < 25 ORDER BY distance LIMIT 0 , 3;
当我在 phpmyadmin 上运行完全相同的查询并通过 mysql 上的命令行它可以工作时,它没有任何意义,但是使用 php 和 codeigniter 它没有。有人可以帮忙吗?
问题解决了
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitude ) ) ) ) AS distance FROM cities_extended HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
mysql_real_escape_string('41.832100'),
mysql_real_escape_string('-87.789597'),
mysql_real_escape_string('41.832100'),
mysql_real_escape_string('25'));
$nearby_cities = $this->db->query($query);
注意:纬度和经度是我表中的列而不是变量。谢谢您的意见!