首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/mysql查询时缺少行

问PHP/mysql查询时缺少行
EN

Stack Overflow用户
提问于 2013-02-08 07:04:42
回答 2查看 1.5K关注 0票数 2

我在PHP脚本中运行以下查询:

代码语言:javascript
复制
$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开头,然后包括所有剩余的邮政编码。这不是里程问题(例如,丢失的邮政编码在半径内-当我在phpMyAdmin中运行查询时,它就会显示出来)。

我在PHP查询中做错了什么,错过了第一行数据?这不仅仅是一个显示问题,因为当我在DB中插入查询结果时,它也缺少第一行。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-08 07:13:07

问题是在第一个fetch中,他们取你的第一行...在没有$row = $radius_result->fetch(PDO::FETCH_ASSOC);的情况下运行这个程序,大约一天前我遇到了同样的问题。

票数 2
EN

Stack Overflow用户

发布于 2013-02-08 07:06:43

在PHP中不需要执行隐式循环,请尝试

代码语言:javascript
复制
$zip = $radius_result->fetchAll(PDO::FETCH_ASSOC);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14762783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档