数组获取时间一行值按代码跳过

时间:2015-06-05 06:03:39

标签: php mysql fetch

在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>");
}

这是什么原因..

4 个答案:

答案 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循环中。