【发布时间】:2012-05-21 09:28:15
【问题描述】:
$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 英里,并且只想要最接近的匹配,但您可以更改它以提供最近的 # 个位置。我找到了查询here。
有什么想法我可能做错了吗?
【问题讨论】:
-
您的数据库有多大?查询在 phpmyadmin 中运行多长时间?
-
通过 myadmin 显示第 0 - 0 行(共 1 行,查询耗时 0.0006 秒)这两个表都有大约 7,000 行,每行 10 列