$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 マイルに設定しており、最も近い一致のみが必要ですが、変更して最も近い場所の数を取得できます。ここでクエリを見つけました。
私が間違っている可能性のあるアイデアはありますか?