2014-10-29 72 views
-1

會話數據特定項這是我的嘗試:如何設置從陣列

$id = mysql_query("SELECT userid from members where username='".$gebruikersnaam."'");  
$_SESSION["id"] = (string)$id; 
var_dump($_SESSION) 

有了這樣的結果:

array[1] { ["id"]=> string(15) "Resource id #14"} 

,而不是實際的字符串值

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – esqew 2014-10-29 15:06:31

+0

在其他頁面使用字符串變量 – 2014-10-29 15:10:01

+0

這看起來[可怕的不安全](http://bobby-tables.com/)。你確定**你的用戶參數是[妥善轉義](http://bobby-tables.com/php)? – tadman 2014-10-29 15:12:45

回答

0

mysql_query函數返回資源。您需要從該資源獲取一行。這將有你想要的數據。

$username = mysqli_real_escape_string($link, $unescapedUsername); 
$result = mysqli_query($link, 'SELECT userid FROM `members` WHERE username = "' . $username . '"'); 
//^result is now a resource 
$row = mysqli_fetch_assoc($result); 
//^row now has an array 
$_SESSION['id'] = $row['userid']; 

正如大家所說的,不要再使用mysql_ *函數。

0

使用mysqli代替mysql並避免sql注入:

$res = mysqli_query($conn, "SELECT userid from members where username='".mysqli_real_escape_string($conn, $gebruikersnaam)."'");  
$row = mysqli_fetch_assoc($res); 
$_SESSION["id"] = (string)$row["id"];