同一個查詢不能套用到兩個 while ?

今天遇到一個問題

$sql = $mysqli->query(
              "SELECT .... "
            );

我有一個查詢想套用到兩個 while上,但這樣卻只有第一個有反應

<? while ($row = mysqli_fetch_array($sql)){ ?>
A
<? }?>

<? while ($row = mysqli_fetch_array($sql)){ ?>
B
<? }?>

有辦法實現同一個查詢可以套用到兩個 while嗎?在同一頁。

阅读 2.1k
2 个回答

在第二个while前加一句 mysql_data_seek( $sql, 0 )
我不会php,语法有不对的地方请见谅。

<? while ($row = mysqli_fetch_array($sql)){ ?>
A
<? }?>

<? mysql_data_seek( $sql, 0 ); ?>

<? while ($row = mysqli_fetch_array($sql)){ ?>
B
<? }?>

你可以先把fetch的结果保存到数组中然后再用数组来循环。

$rows=array();
while($row=mysqli_fetch_array($result)) {
$rows[]=$row;
}

foreach($rows as $row) {
A
}

foreach($rows as $row) {
B
}

或者干脆用mysqli_fetch_all,据说性能上有些许优势:

$rows=mysqli_fetch_all($result, MYSQLI_BOTH);

注意mysqli_fetch_all默认是MYSQLI_NUM,和mysqli_fetch_array不一样,所以要加第二个参数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题