PHP スクリプトで次のクエリを実行しています。
$radius_query = "SELECT zip, ( 3959 * acos( cos( radians(" . $latitude .") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians( " . $longitude . ") ) + sin( radians(" . $latitude .") ) * sin( radians( lat ) ) ) ) AS distance
FROM ZIP HAVING distance < ". $radius;
$radius_result = $db_zipcode->query($radius_query);
if (!$radius_result){
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = $radius_result->fetch(PDO::FETCH_ASSOC);
While($row = $radius_result->fetch(PDO::FETCH_ASSOC))
{
$zip[] = $row['zip'];
}
foreach ($zip as $zip_display){
echo $zip_display . ", " . '';
}
クエリ自体は、1 つの小さなエラーで機能します。データの最初の行が返されません。次のような郵便番号のリストが返されます。
40324、40339、40340、40347、40356...
これは、phpMyAdmin で同じクエリを実行したときに得られる結果です。
しかし、上記のクエリを PHP スクリプトで実行すると、結果セットは 40339 で始まり、残りのすべての郵便番号が含まれます。マイレージの問題ではありません (つまり、不足している zip は半径内に十分あります - phpMyAdmin でクエリを実行すると表示されます)。
データの最初の行を見逃すために PHP クエリで間違っていることは何ですか? クエリ結果をDBに挿入すると、最初の行も欠落しているため、表示の問題だけではありません。
ありがとう!