私はこの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);
注: 緯度と経度は、変数ではなくテーブルの列です。ご意見ありがとうございます。