困惑。 $ _SESSIONS之后的两个方括号?

时间:2017-10-21 13:45:01

标签: php mysql session

如果这是一个非常简单的问题,请道歉。

我能够将fetch_assoc()结果放入会话变量中,然后使用以下内容进行检查:

ORDER BY

while ($row = $result -> fetch_assoc()){ $_SESSION['question'][] = ($row);

最初我有}var_dump($_SESSION);而不是$_SESSION['question'] = $row而且它没有用,因为它只给了最后一行。

出于好奇,为什么我的初始代码不起作用?为什么我需要在$ _SESSION ['question']之后添加一个额外的[]来使它工作?

(注意我没有包含连接数据库和查询等的代码,目的是保持帖子简短,因为我对代码的那部分没有任何问题)

非常感谢。

2 个答案:

答案 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;