2013-07-05 28 views
0

所以我有這樣的代碼:和mysql_fetch_row()的錯誤,但爲什麼

$query = "SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER($name)"; 
$result = mysql_query($query); 
list($count) = mysql_fetch_row($result); 
if($count >= 1) { 
echo 'Username already exists; } 

以及當我測試了我的WAMP的服務器上的一些原因,我得到的結果:「警告:和mysql_fetch_row()預計參數1是資源,布爾在...中給出「,但它完成了工作!用戶已註冊。我知道你必須先做查詢然後取行,但我做到了!那麼,什麼是問題:/

+1

1.'echo $ query;'2.'echo mysql_error();' – zerkms

+3

'mysql_error()'可以告訴你。強制性的,http://bobby-tables.com – mario

+0

aw damn:/我該如何使用mysql_error函數? –

回答

0

如果$ name是一個文字,你可能需要引用它的SQL:

$query = "SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('$name')"; 

您還應該確保它不包含任何轉義引號(見先前有關bobby-tables的評論...)

+0

這個修好了!然而,我的$名稱是$ _POST ['用戶名']的變量,所以我不認爲它必須在引號中! –

+0

我錯了我假設? –

0

您的SQL查詢可能有語法錯誤。這樣做:

$sname = mysql_real_escape_string($name); 
$query = "SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('$sname')"; 

echo $query; 


if (($result = mysql_query($query)) == false) { 
    die(mysql_error); 
} 
list($count) = mysql_fetch_row($result); 
if($count >= 1) { 
    echo 'Username already exists; } 

,當然還有:你應該使用mysqliPDOmysql已被棄用。

+0

感謝您的迴應,但是由於某種原因,mysqli不適用於我,因此我必須繼續努力。然而,我有一個問題,我必須在$ query =「SELECT ....? –

+0

之前轉義我的字符串(mysql_real_escape_string($ name)),或者我這樣寫:$ query =」SELECT COUNT(id)FROM實際上,最清楚的答案可能是'$ sname = mysql_real_escape_string(strtoupper($ name));'並將WHERE子句更改爲'WHHER UPPER(用戶名(用戶名)= UPPER(mysql_real_escape_string($ name))「; –

+0

)='$ sname'',但它可能並不重要。 – 2013-07-05 02:26:25

相關問題