2013-01-31 40 views
-2

可能重複一個有效的MySQL結果資源:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select警告:mysql_result():提供的參數不是在

大家好,我希望你能幫助解決這個問題是你一個人與我的最後一個。我試圖與PHP的用戶註冊和我做的一切,除了這個好:

 Warning: mysql_result(): supplied argument is not a valid 
    MySQL result resource in 

首先我試圖做一個了sanitize功能,但沒有奏效。這是我第一次嘗試

function user_exists ($username){ 
    $username = sanitize ($username); 
    return (mysql_result(mysql_query("SELECT COUNT('id') FROM 'members' WHERE 
    'username' = '$username' "), 0) == 1) ? true : false; 
    } 

然後我雖然我可以嘗試用mysql_real_escape_string,但那麼mysql_result錯誤來了,這是推動我瘋了,因爲我無法找到我得到了什麼錯。這裏是我的代碼與mysql_real_escape_string:

 function user_exists ($username){ 
    $username = mysql_real_escape_string ($username); 
    return (mysql_result(mysql_query("SELECT COUNT('id') FROM 'members' WHERE 
    'username' = '$username' "), 0) == 1) ? true : false; 
    } 

我希望有人能告訴我在哪裏,我聽錯了,所以我可以從我的錯誤中吸取教訓。謝謝你們!!!

+0

和[MySQL的 - 當使用單引號,雙引號,反引號和(http://stackoverflow.com/questions/11321491/mysql-when-to-use-single-quotes-double-引號和反引號) – mario

+1

請不要使用mysql_ *函數,它們被標記爲已棄用。使用PDO或MySQLi。 http://php.net/manual/en/mysqlinfo.api.choosing.php –

回答

0

問題是你用單引號包裝表名和列名,它必須被刪除,因爲名稱不在MySQL保留關鍵字列表中,並且正確的方法是使用反引號。

SELECT COUNT(id) 
FROM members 
WHERE username = '$username' 
+0

這實際上並非如此。你的回答是正確的,但你的推理不是。即使它們是MySQL保留的關鍵字,單引號也不是逃避它們的正確方法。您必須使用反標字符。引號是用於字符串的,而不是標識符。 –

+0

表名和列名的單引號總是不正確的。 – Arjan

+0

@ColinMorelli等等,我說過'單引號是逃避它們的正確方法嗎? –

相關問題