2012-08-22 86 views
-2

我想檢查我的數據庫,看看是否有用戶的驗證碼與註冊用戶在其註冊表單中輸入的驗證碼相同。不過,我不斷收到錯誤:PHP MYSQL數據庫引用錯誤

"Warning: mysql_result() expects parameter 1 to be resource, boolean given in /home/elight5/public_html/test/student_register.php on line 15" 

從我可以做出來,這意味着有一個未定義的變量,但我知道在數據庫中的值適當命名.....難道有什麼錯我的句法?我一直在整個網站使用相同的語法,沒有問題....

關於/在我的代碼中的任何建議或錯誤?

function confirmcode_exists($confirmcode){ 
    $confirmcode = sanitize($confirmcode); 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `confirmcode` = '$confirmcode'"), 0) == 1) ? true : false; 

} 
+3

這個錯誤意味着你的數據庫連接是無效的 - 失敗的連接讓你錯誤,而不是連接。您應該添加一些調試來查看失敗的情況。 – andrewsi

+0

請不要使用'mysql_ *'函數來編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。請參閱* [紅盒子](http://goo.gl/GPmFd)*?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

+0

@andrewsi:應該發佈爲答案。 –

回答

0

mysql_result()的錯誤是指出您的MySQL查詢失敗。

您的實際SQL查詢看起來並不合法,這很可能意味着表或列出現錯誤,或者您的連接無法訪問該表,或者可能連接無效。

嘗試將您的代碼更新到以下版本;這應該告訴你你的實際錯誤是什麼:

$result = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `confirmcode` = '$confirmcode'"); 
if (!$result) { 
    // query error 
    die('Error: ' . mysql_error()); 
} 
return (mysql_result($result, 0) == 1);