我现在有一个基本的登录脚本.
当用户登录时,定义了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)
但它不起作用.
有没有人有任何想法?
谢谢彼得
$ _SESSION是一个数组.你正在克服整个$_SESSION变量.改为:
$_SESSION['data'] = mysql_fetch_assoc($res);
Run Code Online (Sandbox Code Playgroud)
http://us2.php.net/manual/en/session.examples.basic.php
那是因为你将变量的值设置$_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)