如果这是一个非常简单的问题,请道歉。
我能够将fetch_assoc()结果放入会话变量中,然后使用以下内容进行检查:
ORDER BY
while ($row = $result -> fetch_assoc()){
$_SESSION['question'][] = ($row);
最初我有}var_dump($_SESSION);
而不是$_SESSION['question'] = $row
而且它没有用,因为它只给了最后一行。
出于好奇,为什么我的初始代码不起作用?为什么我需要在$ _SESSION ['question']之后添加一个额外的[]来使它工作?
(注意我没有包含连接数据库和查询等的代码,目的是保持帖子简短,因为我对代码的那部分没有任何问题)
非常感谢。
答案 0 :(得分:1)
在while
循环中,您不断为会话变量赋值(因此会覆盖其先前的值):$_SESSION['question'] = $row
。因此,在循环结束时,会话变量的值只包含循环的最新$row
。
通过添加空括号,您告诉PHP您的会话变量是一个数组。现在,在每个循环中,PHP都不会用$row
替换您的会话变量,而只需将$row
添加到数组中。
答案 1 :(得分:0)
首先你必须添加session_start标头然后你可以使用session作为数组
@session_start();
while ($row = $result -> fetch_assoc()){
$_SESSION['question'][] = $row
}
或者您可以像这样使用
@session_start();
$data = [];
while ($row = $result -> fetch_assoc()){
$data[] = $row
}
$_SESSION['question'] = $data;