将变量添加到$ _SESSION

Pet*_*art 1 php mysql session

我现在有一个基本的登录脚本.

当用户登录时,定义了2个变量:

$_SESSION['user_id'] = $user['user_id'];
$_SESSION['username'] = $user['username'];
Run Code Online (Sandbox Code Playgroud)

index.php文件有这个

session_start();
if(array_key_exists('user_id', $_SESSION) && array_key_exists('username', $_SESSION)):
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但是一旦会话启动,我想从数据库中添加更多值,所以我在这里有这个代码:

$res = mysql_query($sql);
$_SESSION = mysql_fetch_assoc($res);
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它会覆盖$ _SESSION ['user_id']和$ _SESSION ['username'].我试过这个:

$_SESSION .= mysql_fetch_assoc($res);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

有没有人有任何想法?

谢谢彼得

Gal*_*len 6

$ _SESSION是一个数组.你正在克服整个$_SESSION变量.改为:

$_SESSION['data'] = mysql_fetch_assoc($res);
Run Code Online (Sandbox Code Playgroud)

http://us2.php.net/manual/en/session.examples.basic.php


Bjö*_*ser 5

那是因为你将变量的值设置$_SESSION为返回值 mysql_fetch_assoc($res);.

你想做的就是这样$_SESSION['query_result'] = mysql_fetch_assoc($res).如果您只想将数据库结果的单个列添加到会话中,您可以这样做:

$res = mysql_query($sql);
$data = mysql_fetch_assoc($res);
$_SESSION['myKey'] = $data['myKey'];
Run Code Online (Sandbox Code Playgroud)