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

Array Fetching time one row value is skipping by code

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

这是什么原因..

删除你的第一条声明:

$row=mysql_fetch_array($result);

上述语句从您的查询中获取下一行并将其作为数组存储在变量 $row 中。但是,由于您有一个 while 循环,每次循环 运行 时它也在做同样的事情,它会用可用的下一行覆盖 $row 中的旧值。因此,当您第一次进入循环时,您的第一行将被删除。删除上面的行将为您解决这个问题。

您正在呼叫 $row=mysql_fetch_array($result); 两次

$row 变量第一次包含第一行。

您第二次遍历所有行,但因为您已经获取了第一行,所以不会再次遍历该行。

解决方法是:去掉对mysql_fetch_array($result);

的第一次调用

因为,如此处所述:http://php.net/manual/en/function.mysql-fetch-array.php

Returns an array that corresponds to the fetched row and moves the internal data pointer ahead.

所以通过第一次调用函数

 // 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 循环中的那个。

您的代码是 correct.The 唯一要做的就是删除 mysql_fetch_array($result) 的第一个赋值。

$row=mysql_fetch_array($result)

只需删除此分配,然后 运行 您的 code.It 将正常工作。