【问题标题】:echoing array results using 'While' does not show row 1使用“While”回显数组结果不显示第 1 行
【发布时间】:2013-05-12 02:54:44
【问题描述】:

我正在使用“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);

【问题讨论】:

    标签: mysql arrays loops


    【解决方案1】:

    在打印结果之前,您有 2 次调用 $row=mysqli_fetch_array($result);。一个在循环之前,另一个作为 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 />';
    }
    

    【讨论】:

    • 澄清一下,$row=mysqli_fetch_array($result);将第一行拉入 $row 然后 while ($row=mysqli_fetch_array($result)) { 在执行循环代码之前拉另一行,因此您不需要第一个 mysqli_fetch_array 调用。
    • 啊哈!非常感谢,我想我必须先在 While 语句之外定义 $row,然后才能在 While 中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多