2011-11-13 78 views
-1

創建的東西一個登錄系統和我得到:mysql_result():提供的參數不是有效的MySQL結果資源錯誤?

警告:mysql_result():提供的參數不是在.../FUNC/user.func.php一個有效的MySQL結果資源上線21

這裏是我的代碼:

function user_register($email, $name, $password) { 

} 

function user_exists($email) { 
    $email = mysql_real_escape_string($email); 
    $query = mysql_query("SELECT COUNT('user_id') FROM 'users' WHERE 'email' ='$email'"); 

    //this is line 21: 
    return (mysql_result($query, 0) == 1) ? true : false; 
} 

回答

1

你的SQL充滿語法錯誤的,單引號來引用字符串常量,反引號(或標準SQL雙引號)用於標識符。試試這個:

$query = mysql_query("SELECT COUNT(user_id) FROM users WHERE email = '$email'"); 

你不需要引用任何這些標識符,所以不要打擾。

fine manual

對於SELECT,SHOW,描述,解釋等語句返回的結果集,的mysql_query()成功返回的資源,或者在錯誤FALSE。

您可能想在修正SQL語法錯誤後添加一些錯誤檢查。

1

查詢中有錯誤。如果你想知道錯誤是什麼,輸出它與mysql_error()

0

您的查詢有語法錯誤。您在字段和表名稱上使用單引號。他們從字段/表名改變爲普通字符串。所以你的查詢歸結爲count(some string) from someotherstring where yetanotherstring

如果您的查詢調用了構造是這樣的:

$result = mysql_query(...) or die(mysql_error()); 

你會被告知語法錯誤的。就目前而言,您的代碼假定查詢成功,這是一件非常糟糕的事情。有一種方法可以使查詢成功,並且有太多的方法可以使其失敗。

0

你的代碼沒有錯誤處理,所以如果出了什麼問題,它會繼續幸福地不知道試圖用石頭做湯。查看manual中的示例,它們在嘗試分析結果之前都會檢查查詢中的錯誤。

相關問題