PHP:为什么我不能在mysqli_fetch_array()结果上循环两次?

Ime*_*iri -3 php mysql mysqli

我正在从mysql数据库中检索一些数据.有两个循环使用相同的结果集.

while ($row = mysqli_fetch_array($newsQuery)) {
     echo "<a href='news-article.php?articleId=" .$row["news_id"]."' class='list-group-item active'>".$row["news_title"]."</a>";
}
Run Code Online (Sandbox Code Playgroud)

这个循环以成功结束.然后在同一页面中我有以下循环.

while ($row = mysqli_fetch_array($newsQuery)) {
    echo $row["news_content"];
}
Run Code Online (Sandbox Code Playgroud)

即使表中有内容,此循环也不会返回任何内容.当我在第一个循环中尝试它.内容显示正确.关于我做错了什么的任何想法.

Nit*_*eli 5

来自PHP的mysqli_fetch_array DOCS:

返回与获取的行对应的数组,如果result参数表示的结果集不再有行,则返回NULL.

您正在使用'while'循环 $row = mysqli_fetch_array($newsQuery)

这意味着循环将继续进行直至mysqli_fetch_array($newsQuery)返回NULL.

这就是为什么你不能再次使用该循环的原因,因为mysqli已经完成了获取结果并且mysqli_fetch_array($newsQuery)现在返回NULL,直到您创建一个新查询.

尝试首先使用结果填充变量,然后循环该变量:

$results = array();
while ($row = mysqli_fetch_array($newsQuery)) {
     $results[] = $row;
}

foreach ($results as $key => $row) {
    echo "<a href='news-article.php?articleId=" .$row["news_id"]."' class='list-group-item active'>".$row["news_title"]."</a>";
}


foreach ($results as $key => $row) {
    echo $row["news_content"];
}
Run Code Online (Sandbox Code Playgroud)