【问题标题】:php skipping first row of result from mysqli [duplicate]php跳过mysqli的第一行结果[重复]
【发布时间】:2016-10-19 08:18:25
【问题描述】:

使用while循环,跳过第一行,使用do while循环,显示最后一行。代码如下:

$query = "select * from sear where wrrnt_no like '%".$text."%'";
$result = $connection->query($query);
echo "<table>";
while(($row = $result->fetch_assoc())!==null) {
  $row = mysqli_fetch_row($result);

  echo "<tr>";
  echo "<td width=".'10'.">";
  $warrent = $row[0];
  echo $warrent;
  echo "</td>";
  echo "<td width=".'10'.">";
  $warrent_date = $row[1];
  echo $warrent_date;
  echo "</td>";
}

echo "</table>";

感谢您提前回复。

【问题讨论】:

  • 也许您可以在每个循环中都有一个索引计数器,而忽略第一个原因。不是最好的,但会起作用。
  • 转储您的查询结果并检查结果,可能是您的查询有问题。
  • 你的问题不清楚:它跳过行(每秒)是你问的问题还是你真的想跳过第一行?

标签: php mysql mysqli


【解决方案1】:

问题是您获取该行两次。 一次是$result-&gt;fetch_assoc,另一次是mysqli_fetch_row

因此您需要删除此行:$row = mysqli_fetch_row($result);,因为该行已被提取。

我认为丢失的不是最后一行或第一行,而是表中的一半行。在一种情况下从第一个开始,在另一种情况下从第二个开始。

更新

如果你想要数字索引,你需要使用fetch_row。所以把代码改成:

$query = "select * from sear where wrrnt_no like '%".$text."%'";
$result = $connection->query($query);
echo "<table>";
while(($row = $result->fetch_row())!==null)
{

  $warrent = $row[0];
  //...the rest of echo here
}

但我建议使用fetch_assoc,然后使用这样的列名称:$warrent = $row['wrrnt_no'];(如果你需要的话)

【讨论】:

  • 问题在我眼里还不清楚……
  • @arkascha 对我来说很清楚。如果他尝试使用for 的示例,他将不会从表中获得第一个结果。如果他将更改为do-while,他将不会从打印的表格中获得最后的结果。问题是他从 db 获取了两次。
  • 获取两次肯定是错误的,当然。但对我来说,实际目标尚不清楚,所以 OP 真正想要实现的是什么。
  • @Daniel 如果我删除 $row = mysqli_fetch_row($result);
  • @DanielDudas while(($row = $result->fetch_row())!==null) 此更新工作正常.. 非常感谢..
猜你喜欢
  • 2015-01-06
  • 2011-01-07
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
相关资源
最近更新 更多