2011-12-25 70 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的版本44年1月5日

+0

是否有可能在字段中有NULLS。我认为传递给该函数的空值可能会返回此错误 – Sparky 2011-12-25 18:46:21

+0

这是从shell脚本启动的吗?给定的值是“纬度”还是“经度”? – 2011-12-25 19:09:36

+0

是的,它们是给定值,并且没有NULL值 – Grigor 2011-12-25 19:17:39

回答

3

从我找到的链接,这是通常是由度数参数传递给弧度函数引起的,用逗号将整数与度数值的小数部分分开。

53779度经线 4,566度北纬

这看起来像两个参数(用逗号分隔)的弧度功能,它抛出,你看到的错误。

解决的办法是做一些飞行修改来格式化你的学位论点作为分隔符而不是逗号。