Php 而mysqli_fetch_assoc的函数是无限的

Php 而mysqli_fetch_assoc的函数是无限的,php,session,Php,Session,我在一个会话中有两个HTML页面。在我的第一页上,我想创建一个数组,它保存在$\u会话变量中。在第二页,我想显示我的数组 我的第一页的PHP代码如下所示: <?php include ("../script/db_connect.php"); $select_questions = 'select * from questions '; if (isset($_POST["own"]) && $_POST["own"] == "No") { $sel

我在一个会话中有两个HTML页面。在我的第一页上,我想创建一个数组,它保存在$\u会话变量中。在第二页,我想显示我的数组

我的第一页的PHP代码如下所示:

<?php
  include ("../script/db_connect.php");

  $select_questions = 'select * from questions ';

  if (isset($_POST["own"]) && $_POST["own"] == "No") {
    $select_questions .= 'where creator != '
                       . $_SESSION["id"];
  }

  $select_questions .= 'limit 3';

  $questions_result = mysqli_query($con, $select_questions);

  $_SESSION["questions"] = mysqli_fetch_assoc($questions_result);

  mysqli_close($con);
?>
<?php while ($array = $_SESSION["questions"]) {
       echo $array["question"]; } ?>

我第二页上的PHP代码如下所示:

<?php
  include ("../script/db_connect.php");

  $select_questions = 'select * from questions ';

  if (isset($_POST["own"]) && $_POST["own"] == "No") {
    $select_questions .= 'where creator != '
                       . $_SESSION["id"];
  }

  $select_questions .= 'limit 3';

  $questions_result = mysqli_query($con, $select_questions);

  $_SESSION["questions"] = mysqli_fetch_assoc($questions_result);

  mysqli_close($con);
?>
<?php while ($array = $_SESSION["questions"]) {
       echo $array["question"]; } ?>

当我转到第二页时,会显示一个无限循环,其中只有数组的第一个元素会反复显示。原因是什么?我在代码中找不到任何错误。

请更改此选项

$\u SESSION[“questions”]=mysqli\u fetch\u assoc($questions\u result)

to(这里我们从sql结果中获取所有行,而不仅仅是一行)

while($row=mysqli\u fetch\u assoc($questions\u result))$\u SESSION[“questions”][]=$row

后来呢


foreach($\u SESSION[“questions”]as$quest){echo$quest[“question”];}

Do
$array=array\u shift($\u SESSION[“questions”])
否则它会用相同的数据设置一个新的值,然后变成无穷大。但是如果您只使用
mysqli\u fetch assoc在行上取,为什么要使用
而使用
($questions\u result)
?右边应该是
,而($array=mysqli\u fetch\u assoc($questions\u result))
这一行效果更好,但有些条目会多次显示。因此,最后我没有得到3行(第1行、第2行、第3行),而是6行(第1行、第1行、第2行、第3行、第1行、第2行)。顺序很奇怪。@sebjel1它与会话变量的使用有关,在重新填充之前是否清空了它?此时为什么要使用$\u会话?重复您的逻辑,我在答案中的代码示例完全可以。Downvoter没有大脑。谢谢,我的问题是,我没有清空我的$\u会话变量。谢谢!