2011-04-10 86 views
0

我发现最近的位置(与谷歌API长/ LAT)与结肠在我的SQL数据库/ LAT半径区域,这里是我的查询:PHP - MySQL的查询问题

$query = "SELECT id, (3959 * acos(cos(radians(".$lat.")) * cos(radians(lat)) * cos(radians(lon) - radians(".$long.")) + sin(radians(".$lat.")) * sin(radians(lat)))) AS distance FROM finder_location HAVING distance < 25 ORDER BY distance LIMIT 0 , 1"; 

    $result = mysql_query($query); 

    $row = mysql_fetch_array($result); 
    echo $row['id']; 

查询里面是正确phpMyAdmin的回归为:

id 9 
distance 0.74066713768542 

因此,查询正确编译...

但是,当我试图在PHP中输出,我得到这些错误:

您的SQL语法错误; 查看与您的MySQL服务器版本 相对应的手册 正确的语法使用附近'>)* cos( 弧度(lat))* cos(弧度(lon) - 弧度(-73.988307))'at第1个警告:mysql_fetch_array():提供 参数不是一个有效的MySQL结果 资源

+0

您需要查看PHP中最终生成的查询('echo $ query;')。你的一些变量似乎是空的。 – 2011-04-10 10:35:50

+1

可能$ LAT变量包含无效值,检查它 – 2011-04-10 10:37:07

回答

3

你的PHP $lat变量没有被正确填充。你可以在mysql错误中看到html标签的尾部。调试您的$lat$long以确保它们在查询前具有正确的值。

+0

这些变量输出直长,纬度:40.66677, -73.988307 – alyx 2011-04-10 10:42:21

+0

不知是输出' 40.66677'看起来像'40.66677'在您的浏览器,但实际上有一些HTML包装的价值。 – 2011-04-10 10:48:12

+0

不,从两个回声只是换行符: 40.66677
-73.988307
alyx 2011-04-10 10:50:34