2013-03-16 53 views
-2
$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。請幫忙!PHP - 在PHP會話中存儲來自MYSQL數據庫的賬戶ID

+0

看看什麼'的var_dump($ ID)'你myswl_query後輸出,並且應該給你一個提示,到哪裏去錯誤。 – Stu 2013-03-16 11:56:28

+0

$ id將返回資源值,如#7資源。將它保存在會話中並不是一件好事! – 2013-03-16 11:58:08

回答

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脆弱,如果變量的值(小號)從外部來了。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

+0

謝謝!有用!好的。要閱讀防止mysql注入。 – xenazfire 2013-03-16 12:26:17

+0

不客氣::D'很高興幫助。 – 2013-03-16 12:26:53

+0

嗨@JW,所有工作都很好,但可以在會話中將相同的ID存儲到數據庫中嗎?我嘗試將會話中的相同ID存儲到數據庫,但不會被插入。 – xenazfire 2013-03-16 16:44:33

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"]."");