2013-05-03 113 views
0

我使用的存儲$ _SESSION的用戶名(存儲在$用戶名變量)使用PHP下面的查詢,以獲得用戶的ID:如何在PHP中處理來自sql查詢的單個結果?

$query = mysql_query("SELECT id FROM users WHERE username = '".$username."'"); 

我然後處理查詢結果如下:

$userid = mysql_fetch_row($query); 

因爲我登錄的演示用戶,用戶ID,這個查詢應該返回是:12。但是,當我回聲$用戶ID [「身份證」]我得到這樣的輸出:

1111 

這不是處理查詢中數據的正確方法嗎?我是否應該使用mysql_fetch_row(),如果我只希望獲得單個結果?

我也嘗試在PHPMyAdmin中運行查詢,它返回預期的結果就好了。

+0

嘗試在PHPMyadmin或其他已安裝且可以訪問的數據庫管理器中運行查詢,並查看兩個結果是否匹配。 – sven 2013-05-03 15:32:32

+0

衝突...您正在搜索字段「用戶名」,然後回顯「ID」。 – itsols 2013-05-03 15:32:57

+4

**不再支持** mysql_ *'函數,它們是[**官方不推薦使用的**](https://wiki.php.net/rfc/mysql_deprecation),**不再維護**並且將來會[**刪除**](http://php.net/manual/en/function.mysql-connect.php#warning)。您應該使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/msqli)更新您的代碼,以確保您的項目未來的功能。 – jadkik94 2013-05-03 15:33:09

回答

0

使用獲取結果:

$query="SELECT id FROM users WHERE username ='$username'"; 
    $res=mysql_query($query); 
    while($row=mysql_fetch_row($res)) 
    { 
       $id=$row[0]; //change to the column number you are using to store id 
    } 
0

試試這個

while($userid = mysql_fetch_array($query)) 
    { 
     echo $userid['id'].'<br />'; 
    } 
0

您的查詢很容易受到SQL注入攻擊和你正在使用棄用庫,這將使從未來的版本中刪除的PHP。

我建議轉移到mysqli(documentation),這將有助於保護您免受注入式攻擊(documentation)的注入攻擊。

您的查詢看起來是正確的。如果您在PHPMyAdmin或SQL命令行中運行SELECT id FROM users WHERE username = 'demo',您會得到什麼?是username a UNIQUE字段還是你有兩個賬號demo

+0

感謝您的回覆。我改變了代碼,現在使用mysqli,但是我仍然得到相同的結果。要回答你最後的問題,用戶名是一個獨特的字段,當我在PHPMyAdmin中運行查詢時,我得到了12的預期結果,但不是當我在php中運行它時... – user2345507 2013-05-03 16:36:03

+0

PHP是否連接到相同的'mysql'實例你是?嘗試使用'SELECT * FROM users;',' - > fetch_assoc'並回顯'foreach'循環中的所有值。 – 2013-05-03 17:04:19

相關問題