0

我正在使用“While”循环来遍历一组用户的名字、姓氏和电子邮件。当我的“While”循环执行并回显数据时,它成功显示了数据库中的行数据,但没有显示第 1 行。它从第 2 行开始并正确吐出所有内容,但为什么会跳过第 1 行?

$query= "SELECT * FROM email_list";

$result=mysqli_query($dbc, $query);

$row=mysqli_fetch_array($result);


while ($row=mysqli_fetch_array($result)) {
   echo $row['first_name'] . ' ' . $row['last_name'] . ' : '
   . $row['email'] . '<br />';
   }

  mysqli_close($dbc);

我发现的一件事是,如果我把这部分放在:

$row=mysqli_fetch_array($result);
  echo $row['first_name'] . ' ' . $row['last_name'] . ' : '
   . $row['email'] . '<br />';

在“While”循环上方,它确实成功地显示了第一行数据,以及所有其他行,所以,如果这令人困惑,这样编码它(很长的路 - 下面)实际上是可行的,但它似乎是多余的并且我想使用最佳 DRY 实践:

  $query= "SELECT * FROM email_list";

$result=mysqli_query($dbc, $query);

$row=mysqli_fetch_array($result);

  echo $row['first_name'] . ' ' . $row['last_name'] . ' : '
   . $row['email'] . '<br />';


while ($row=mysqli_fetch_array($result)) {
   echo $row['first_name'] . ' ' . $row['last_name'] . ' : '
   . $row['email'] . '<br />';
   }

  mysqli_close($dbc);
4

1 回答 1

1

$row=mysqli_fetch_array($result);在打印结果之前,您有 2 次调用。一个在循环之前,另一个作为 while 语句中的表达式。

尝试删除 while 循环之前的那个。

$result=mysqli_query($dbc, $query);

// kill this line $row=mysqli_fetch_array($result);

while ($row=mysqli_fetch_array($result)) {
   echo $row['first_name'] . ' ' . $row['last_name'] . ' : '
   . $row['email'] . '<br />';
}
于 2013-05-17T02:40:38.153 回答