2014-07-16 96 views
-2
if(mysql_result(mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
    return true; 
} else { 
    return false; 
} 

我知道這可能是從某處複製的,但是現在這使我瘋狂。請幫忙。mysql_result()期望參數1是資源,而不是布爾給定

+0

我希望你逃避你的變量之間取出的空間。請注意,'mysql'擴展將很快被棄用,並在將來被刪除。考慮使用'mysqli' – bear

+0

@ bear不需要轉義變量。 PHP在使用雙引號時區分變量。 – P5Coder

+0

@ P5Coder如果一個變量包含''',則查詢將失敗。 – bear

回答

0

您的mysql_query()函數調用失敗並返回FALSE這是mysql_result()的第一個無效參數。

單獨運行mysql_query(),並調用mysql_error()以獲取錯誤。

查詢失敗,因爲COUNT (...)應該是COUNT(...)否則它會嘗試在表中找到名爲count的列。

+0

它告訴我,COUNT不存在 –

+0

啊,你需要把計數和括號之間的空間! – Arth

+0

謝謝YouUUUUUUUUUUUUUUUUUUUUU @Arth –

1

當您的查詢中有錯誤導致其失敗時,將顯示此錯誤消息。

注意:如果沒有行受到查詢的影響,則不會出現此錯誤。只有具有無效語法的查詢纔會生成此錯誤。

故障排除步驟

確保你有你的開發服務器配置爲顯示所有錯誤。你可以將它放在你的文件的頂部或者你的配置文件中:error_reporting(-1);.如果你有任何語法錯誤,這會將它們指向你。使用mysql_error()mysql_error()將報告MySQL執行查詢時遇到的任何錯誤。

使用範例:

mysql_connect($host, $username, $password) or die("cannot connect"); 
mysql_select_db($db_name) or die("cannot select DB"); 

$sql = "SELECT * FROM table_name"; 
$result = mysql_query($sql); 

if (false === $result) { 
    echo mysql_error(); 
} 

從運行MySQL命令行或像phpMyAdmin工具查詢。如果你的查詢語法錯誤,這會告訴你它是什麼。

確保您的報價是正確的。缺少關於查詢或值的引用會導致查詢失敗。

確保你逃脫你的價值觀。查詢中的引號可能導致查詢失敗(並且還會讓您打開SQL注入)。使用mysql_real_escape_string()來轉義您的輸入。

確保你沒有混合mysqli_ *和mysql_ *函數。它們不是一回事,也不能一起使用。 (如果你要選擇一個或另一個棍子mysqli_ *。爲什麼見下文)。

mysql_ *函數不應該被用於新的代碼其他提示。他們不再被維護,社區已經開始了貶值過程。相反,您應該瞭解準備好的聲明並使用PDO或MySQLi。如果你不能決定,這篇文章將有助於選擇。如果你在意學習,這裏有很好的PDO教程。

+0

它告訴我COUNT不存在 –

+0

您應該將這些信息(「它告訴我COUNT不存在」)添加到您的問題中! –

+0

刪除COUNT之後的空格。如果這有助於記住標記爲正確:) – shivampaw

0

您的查詢應該讀

SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0 

COUNT( USER_ID )

相關問題