-3
$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。请帮忙!

4

2 回答 2

2

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,您可以摆脱在值周围使用单引号。

于 2013-03-16T11:57:21.713 回答
2

尝试这个

$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"]."");
于 2013-03-16T11:57:33.987 回答