0

我正在尝试过滤我的表格结果并按 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
4

1 回答 1

0

错误消息明确指出,当您调用mysqli_fetch_assoc($get_result_res)时,$get_result_res不是有效的 result_set。我的猜测是mysqli_query返回了 FALSE。可能是因为有一个错误是你的 SQL 语句。

从文档:

mysqli_query

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


您现在的下一步应该是以某种方式打印查询以发现问题。顺便说一句, mysqli 可能允许您在发生故障时从数据库服务器获取一些有意义的错误消息 ......

于 2013-08-16T18:02:51.867 回答