$id = mysql_query("SELECT id FROM account WHERE username='".$username."' LIMIT 1") or die(mysql_error);
$_SESSION['id'] = $id ;
echo ("ID: ".$_SESSION["id"]."");
它输出“ID:0”,而数据库中帐户的 id 应该是 1。请帮忙!
mysql_query
返回一个资源。返回的结果资源应该传递给mysql_fetch_array()
和其他处理结果表的函数,以访问返回的数据。
$result = mysql_query("SELECT id FROM account WHERE username='".$username."' LIMIT 1") or die(mysql_error);
while ($row = mysql_fetch_assoc($result))
{
$_SESSION['id'] = $row['id'] ;
}
echo ("ID: ".$_SESSION["id"]."");
作为旁注,SQL Injection
如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
尝试这个
$id = mysql_query("SELECT id FROM account WHERE username='".$username."' LIMIT 1") or die(mysql_error);
while($myid = mysql_fetch_array($id)){
$_SESSION['id'] = $myid ;
}
echo ("ID: ".$_SESSION["id"]."");