将变量添加到$ _SESSION

时间:2011-11-28 18:47:25

标签: php mysql session

目前我有一个基本的登录脚本。

当用户登录时,定义了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);

但它不起作用。

有没有人有任何想法?

由于 彼得

4 个答案:

答案 0 :(得分:6)

$ _ SESSION是一个数组。你正在覆盖整个$_SESSION变量。这样做:

$_SESSION['data'] = mysql_fetch_assoc($res);

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

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

请参阅http://php.net/manual/en/function.array-merge.php

答案 3 :(得分:1)

将来不推荐使用函数mysql_ *,建议使用PDO或MySQLi。

有些主持人已禁用这些功能。