$query = "SELECT *, ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance
FROM average_temp
HAVING distance<=25
ORDER BY distance ASC limit 1";
我可以在 phpmyadmin 中运行上述查询而不会出现任何问题,但如果我通过我的 php 文件运行它,它大约有 20% 的时间会失败。
这是处理查询结果的代码:
if (!$query){
die ("Query failed: " . mysql_error());
}
$result = mysqli_query($db, $query);
$num_results = mysqli_num_rows($result);
$row = mysqli_fetch_assoc($result);
$var = $row['id'];
80% 的时间它运行良好,另外 20% 的时间它挂起 30 秒并抛出此错误:
警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,C:\wamp\w 中给出的布尔值
我正在做的是从另一个表中获取纬度和经度值并用这个表引用它们。该公式就像在给定距离内寻找位置的魅力一样。我将其设置为 25 英里,并且只想要最接近的匹配,但您可以更改它以提供最近的 # 个位置。我在这里找到了查询。
有什么想法我可能做错了吗?