2014-04-01 60 views
0

我試圖使用與它相關的id從我的數據庫中檢索email領域:SQL請求失敗檢索數據

$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = '".$userID."' ") or die(mysql_error()); 

此查詢總是返回NULL,我不明白爲什麼。

已經使用var_dump測試過$userID確實是正確的。

但是,當我用硬編碼值用它來代替$userID正常工作:

$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = '85' ") or die(mysql_error()); 

爲什麼沒有$userID變量傳遞給我的查詢?有沒有一種方法可以正確傳遞?

編輯:根據要求$用戶ID的

宣言。此變量的var_dump在查詢2之前工作正常。

// Fetch ID for matching details 
    $query = mysql_query("SELECT id FROM `users` WHERE `email` = '".$emailInput."' && `username` = '".$usernameInput."' ") or die(mysql_error()); 


     // Successful query - ID stored 
     if(mysql_num_rows($query) > 0){ 
     $userID = mysql_fetch_array($query);} 

     var_dump($userID); 

兩個var_dumps輸出頁面上的以下內容:

array(2) { [0]=> string(2) "85" ["id"]=> string(2) "85" } NULL 
+1

的var_dump($用戶ID );併發布結果 – Hackerman

+1

嗨羅伯特,是的,我已經做到了,就像我在OP中所說的那樣。它張貼正確的結果。 – Francesca

+0

Francesca,嘗試在var上存儲空洞查詢並轉儲它以查看結果。如果Id是數字,你不應該需要''''圍繞85 –

回答

3

編號說,$userID是一個數組的事實是你的問題...做$userID['id']而不是在查詢中。

$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = '" . $userID['id'] . "' ") or die(mysql_error()); 
0

嘗試刪除雙引號或單引號。因爲通常的ID數據類型爲int你使用兩次,這使得它的字符串值..

也是PHP在識別變量和數據類型,這樣你們可以使用"$userID""{$userID}"沒有concatination很聰明..

0

它可能是一個串聯的問題,如果用戶ID $字符串是其應該是好的,但如果它的整數或double..etc將被處理爲一個字符串

如果它的整數嘗試:

$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = ".$userID) or die(mysql_error()); 

$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = ".$userID['0']) or die(mysql_error()); 
0

所以,問題是,你的$userID不是或簡單的數字,但它是一個數組,您仍然試圖在查詢中連接它。

問題是,別的地方在你的代碼,很可能在其中設置$userID

這裏有雲解決方案:

$sql = mysql_query("SELECT email FROM `users` WHERE `id` = " . $userID['id']) or die(mysql_error()); 
+0

複製貓... :-) – superphonic

+0

不是真的。 @superphonic – ponciste

0

試試這個....

$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = $userID ") or die(mysql_error()); 
+0

注射多少? – Zane