发现PHP查询MYSQL,遍历结果,会出现2倍数据(数据库1行数据2列,遍历输出4列)

软件版本如下:php5.4,mysql5.1,apache2.2.个人感觉不是软件版本问题。数据表t如下IDNAME1abc2def以下附上代码<?phpheader("... 软件版本如下:php5.4,mysql5.1,apache2.2. 个人感觉不是软件版本问题。
数据表t如下
ID NAME
1 abc
2 def

以下附上代码

<?php
header("Content-type: text/html; charset=utf-8");
$connect = mysql_connect('127.0.0.1:3306', 'root', '123456');
mysql_query("SET NAMES 'UTF8'");
$db = mysql_select_db('bk', $connect);

$res = mysql_query('select * from t', $connect);
$line = mysql_fetch_array($res);

var_dump($line);

echo '<br/><br/><br/><br/>';

echo '<table border="1"><tr><td>ID</td><td>NAME</td></tr>';
do{
echo '<tr>';
while(list($n,$v)=each($line)){
//if(preg_match("/^\d/i", $n)) //把这行注释去掉,则页面按原意输出
echo "<td>$v</td>";
}
echo '</tr>';
}while($line=mysql_fetch_array($res));
echo '</table>';
?>

最后附上图片
用$line['id']这样没问题
但是遍历都会出现我说的那个问题

var_dump()很明显已经输出一行数据4列数据
展开
 我来答
百度网友690c81e14
2013-06-20 · TA获得超过635个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:667万
展开全部
问题出在mysql_fetch_array这一步,此方法的第二个参数表示你要获取的数组的类型
MYSQL_ASSOC 关联数组,就是键名是id,name的
MYSQL_NUM 索引数组,键名是数字的
MYSQL_BOTH 以上两种都有
不给第二个参数的话,默认是MYSQL_BOTH,所以就出现了你上面的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT漏网的鱼
2020-04-11
知道答主
回答量:92
采纳率:27%
帮助的人:5.5万
展开全部
mysqli_fetch_all($res)解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大牙网郑青龙
2013-06-20
知道答主
回答量:11
采纳率:0%
帮助的人:6.2万
展开全部
是你用的函数问题换成mysql_fetch_assoc试一下! mysql_fetch_array是已关联索引数组取出!换了百分之百行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
守望者小米
2018-12-25
知道答主
回答量:9
采纳率:0%
帮助的人:8388
展开全部
问题问得挺好,我也遇到了同样的问题。但我是双层循环订单信息(订单表和订单详情表有关联),然后最外层循环mysql语句套用了select from 订单表 join 订单详情表 on语句,出现了双倍的数据。
原来$ssq="SELECT * FROM orders AS o JOIN orderdetails as ods ON o.order_number=ods.order_number Where o.userid=$u";
改为$ssq="SELECT * FROM orders AS o Where o.userid=$u";
while ($row = mysqli_fetch_assoc($result)){
?>
<tr class="results">
<td valign="top" width="10%"><?php echo $row['order_number'];?></td>
你的不是双循环,奇怪了。
反正去掉了join on,数据库是一条记录,页面显示也是一条记录了(原来是显示两条记录),你将多余的东西用引号注释掉,排查排查,或者换一种思路。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式