在php代码中,我试图从我的数据库中获取数据,但是当我下次输出代码在我的输出中跳过第一个值时,我会获取数据两次或一次..
$result = mysql_query($order) or die(mysql_error());
echo mysql_num_rows($result);
$row=mysql_fetch_array($result);
while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[name]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[address]</td>");
echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>");
}
这是什么原因..
答案 0 :(得分:4)
您正在呼叫$row=mysql_fetch_array($result);
两次
$ row变量第一次包含第一行。
第二次循环遍历所有行,但由于您已经获取了第一行,因此它不再循环通过该行。
解决方案是:删除对mysql_fetch_array($result);
的第一个电话
答案 1 :(得分:1)
删除您的第一句话:
$row=mysql_fetch_array($result);
上面的语句从查询中获取下一行,并将其作为数组存储在变量$ row中。但是,由于每次循环运行时都有一个while循环也会执行相同的操作,因此它会覆盖$ row中的旧值,并且下一行可用。因此,当您第一次进入循环时,您的第一行将被删除。删除上述行将为您解决此问题。
答案 2 :(得分:1)
你的代码是正确的。唯一要做的就是删除mysql_fetch_array($ result)的第一个赋值。
$row=mysql_fetch_array($result)
只需删除此作业,然后运行您的代码。它将正常工作。
答案 3 :(得分:0)
因为,如此处所述:http://php.net/manual/en/function.mysql-fetch-array.php
返回与获取的行对应的数组并移动 前面的内部数据指针。
所以第一次调用该函数
// else{echo "false";}
$row=mysql_fetch_array($result);
// echo mysql_num_rows($row);
您正在向前移动指针,因此当您在while循环中调用该函数时
while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[name]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[address]</td>");
echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>");
}
指针已向前移动。
要解决您的问题,请移除第一个$row=mysql_fetch_array($result);
,并将其保留在您的while循环中。