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