2014-10-29 46 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"];