2011-11-28 114 views
1

我目前有一個基本的登錄腳本。

當兩個變量的用戶登錄定義:

$_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); 

當我這樣做時, ides $ _SESSION ['user_id']和$ _SESSION ['username']。 我試過這個:

$_SESSION .= mysql_fetch_assoc($res); 

但它沒有工作。

有沒有人有任何想法?

由於 彼得

+0

'array_merge()'? – nickb

+0

我想補充一點,這是一個壞主意。您應該只將用戶標識存儲在會話中,作爲用戶名,角色,電子郵件等等。可能會在某些時候改變。最好在每個頁面上加載所需的內容。 – Xeoncross

+0

如果我這樣做,那麼每次加載數據的時候,網站都會變慢。除非用戶更改該數據庫,否則該數據庫中的數據不會更改,當用戶更改其帳戶信息時,$ _SESSION變量將被重新定義 –

回答

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']; 
1

功能mysql_ *在將來會被棄用和刪除,建議使用PDO或MySQLi。

一些主機已禁用這些功能。

+0

這是2年前問的:) –