目前我有一个基本的登录脚本。
当用户登录时,定义了2个变量:
$_SESSION['user_id'] = $user['user_id'];
$_SESSION['username'] = $user['username'];
index.php文件有此
session_start();
if(array_key_exists('user_id', $_SESSION) && array_key_exists('username', $_SESSION)):
这一切都很好,但是一旦会话启动,我想从数据库中添加更多值,所以我在这里有这个代码:
$res = mysql_query($sql);
$_SESSION = mysql_fetch_assoc($res);
当我这样做时,它会覆盖$ _SESSION ['user_id']和$ _SESSION ['username']。 我试过这个:
$_SESSION .= mysql_fetch_assoc($res);
但它不起作用。
有没有人有任何想法?
由于 彼得
答案 0 :(得分:6)
$ _ SESSION是一个数组。你正在覆盖整个$_SESSION
变量。这样做:
$_SESSION['data'] = mysql_fetch_assoc($res);
答案 1 :(得分: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'];
答案 2 :(得分:1)
尝试合并数组
$res = mysql_query($sql);
$_SESSION = array_merge(mysql_fetch_assoc($res), $_SESSION);
答案 3 :(得分:1)
将来不推荐使用函数mysql_ *,建议使用PDO或MySQLi。
有些主持人已禁用这些功能。