通过lon / lat坐标计算排序PHP / SQL结果

时间:2013-08-16 17:40:11

标签: php mysql latitude-longitude

我正在尝试过滤我的表格结果并按lon和lat坐标排序,但是我正在使用的代码出现错误。这是代码,但我不确定我是否正在使用正确的计算方法进行排序。有人可以帮忙:

$keyword = //From Form Input
$lon = //From Form Input
$lat = //From Form Input
$filter = //From Form Input

$radius = 6371;

//$get_result_sql = "SELECT * FROM members WHERE type = '$filter' AND name LIKE '%$keyword%'";
$get_result_sql = "SELECT * FROM members WHERE type = '$filter' AND name LIKE '%$keyword%' ORDER BY acos(sin($lat) * sin(lat) + cos($lat) * cos(lat) * cos(lon - ($lon))) * $radius DESC";
$get_result_res = mysqli_query($con, $get_result_sql);
if(mysqli_affected_rows($con)!=0){ //and if atleast one record is found 
    while($result = mysqli_fetch_assoc($get_result_res)){//This line has the error

1 个答案:

答案 0 :(得分:0)

错误消息清楚地表明您致电mysqli_fetch_assoc($get_result_res)$get_result_res 是有效的result_set。我猜是mysqli_query已经返回FALSE。可能是因为您的SQL语句存在错误。

来自doc:

  

<强> mysqli_query

     

失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或   EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于   其他成功的查询mysqli_query()将返回TRUE。


你现在的下一步应该以某种方式打印查询是为了发现问题。如果发生故障,来自数据库服务器的BTW,mysqli probably allow you to obtain some meaningful error message ......