2011-12-25 18 views
2

私はstackoverflowを探していて、私の質問に答えましたが、私のコードで実装しようとしたときに私は奇妙なエラーが発生しました。ここ大きな円計算のSQLエラー

コードです:

SELECT `zip_code`, (6371 * acos(cos(radians($latitude)) * cos(radians(`lat`)) * cos(radians(`long`) - radians($longitude)) + sin(radians($latitude)) * sin(radians(`lat`)))) AS `distance` 
FROM `places` 
HAVING `distance` < $within 
ORDER BY `distance` ASC 
LIMIT 10; 

私は次のエラーを取得する:

Incorrect parameter count in the call to native function 'radians'

私は私が見つけたのリンクからMySQLバージョン5.1.44

+0

フィールドにNULLSを付けることは可能ですか?関数に渡されたNULL値がこのエラーを返すかもしれないと思います – Sparky

+0

これはシェルスクリプトから起動されましたか? '$ latitude'と' $ longitude'の両方に値がありましたか? –

+0

はい値が与えられ、NULL値はありません – Grigor

答えて

3

を使用し、これは通常は度数の引数をラジアン関数に渡し、度数の小数部から整数全体を区切るコンマで置き換えます。経度

53779度 4566度は、これはラジアン関数への2つの引数(コンマで区切られた)のように見え、それはあなたが見るエラーをスロー

を緯度。

解決策は、度数引数をピリオドでカンマではなく区切り文字として書式設定するためのフライ修正を行うことです。