我在 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 . ", " . '';
}
查询本身有一个小错误 - 它不返回第一行数据。它应该返回类似于以下的邮政编码列表:
40324、40339、40340、40347、40356...
这是我在 phpMyAdmin 中运行相同查询时得到的结果。
但是,当我在 PHP 脚本中运行上述查询时,结果集以 40339 开头,然后包括所有剩余的邮政编码。它不是里程问题(即丢失的 zip 完全在半径范围内 - 正如我在 phpMyAdmin 中运行查询时显示的那样)。
我在 PHP 查询中做错了什么以错过第一行数据?这不仅仅是一个显示问题,因为当我将查询结果插入数据库时,它也缺少第一行。
谢谢!