mysqli fetch_assoc用foreach删除第一行

时间:2015-07-09 17:35:34

标签: php mysql arrays mysqli

我正在尝试将我的一个网页从mysql命令更新到mysqli,除了我的记录输出外,一切正常。它跳过了第一行。应该有124条记录,我用

验证
$NumCols = $RecordSet->num_rows;
Print($NumCols . "<br/>");

但是,使用以下代码仅打印123条记录:

// Fill the first row of the table with the field names
$row = mysqli_fetch_assoc($RecordSet);
foreach($row as $column => $value) {
   Print("<td>" . $column . "</td>");
}
Print("</tr>");

// Fill the remaining rows of the table with the values
// This code is dropping the first result
$Pos = 1;
While($row1 = $RecordSet->fetch_assoc())
{
   Print("<tr><td>$Pos</td>");
   foreach($row1 as $column => $value) {
      Print("<td>" . $value . "</td>");
   }
   Print("</tr>");
   $Pos++;
}

我尝试过没有while循环,只打印一个记录,每个值都作为一个新行。我还尝试在没有foreach语句的情况下打印行,并且只显示了单词Array 123次并仍然跳过第一行。我还尝试将while循环中的row变量从row更改为row1,两个结果都给出了相同的缺失第一个结果。

在将mysql页面的输出与mysqli页面进行比较时,我还验证了第一行缺失。

2 个答案:

答案 0 :(得分:2)

您获取表头的第一行。
您可以在while循环之前重置结果集的内部指针:

$RecordSet->data_seek(0);
while($row1 = $RecordSet->fetch_assoc())

答案 1 :(得分:0)

$row = mysqli_fetch_assoc($RecordSet);

这是获取第一条记录,因此while循环的fetch_assoc()无法获取它。
您可能想切换到do-while loop