我正在尝试过滤我的表格结果并按经度和纬度坐标对其进行排序,但我正在使用的代码出现错误。这是代码,但我不确定我是否使用了正确的排序计算。任何人都可以帮忙吗:
$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
最佳答案
错误消息清楚地表明,当您调用mysqli_fetch_assoc($get_result_res)
时,$get_result_res
不是有效的result_set。我的猜测是mysqli_query
返回FALSE。可能是因为你的SQL语句有错误。
来自文档:
<小时/>
mysqli_query
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
您现在的下一步应该是以某种方式打印查询,以便发现问题。顺便说一句,mysqli probably allow you to obtain some meaningful error message 从数据库服务器发生故障时...
关于php - 通过 lon/lat 坐标计算对 PHP/SQL 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279137/