2012-03-20 50 views
-1

可能重複:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
Warning: mysql_fetch_* expects parameter 1 to be resource, boolean given errorPHP警告:mysql_num_rows()預計參數1是資源,在布爾給出/home/website/public_html/facebook/fbclogin.php在線57上

警告:mysql_num_rows()預計參數1是資源,在布爾給出/home/website/public_html/facebook/fbclogin.php在線57上

這是該行:

if (mysql_num_rows($rs)) $u = mysql_fetch_array($rs); else $u=""; 

,這是什麼它周圍:

// with the user id from facebook retrived with the API, 
// search for a user already registered with this process: 
$rs = mysql_query("select * from users where fb_userid='$fb_user'"); 

if (mysql_num_rows($rs)) $u = mysql_fetch_array($rs); else $u=""; 

if (is_array($u)) { 

爲什麼會出現這個錯誤,我應該怎麼做,以阻止發生呢?

謝謝先進。

+0

這個鏈接可能對你有幫助:http://us2.php.net/manual/en/function.mysql-query.php – dldnh 2012-03-20 16:28:14

+0

也值得一提,你應該通過使用mysql_real_escape_string來避免sql注入,參見http:/ /us2.php.net/manual/en/function.mysql-real-escape-string.php – dldnh 2012-03-20 16:31:26

+0

嚴重的是,爲什麼下調投票? – 2012-03-20 16:34:31

回答

0

這意味着MySQL查詢沒有正確執行。你可以用它來計算出了什麼毛病:

$rs = mysql_query("select * from users where fb_userid='$fb_user'") 
or die(mysql_error()); 

儘管在這種情況下,它似乎問題是,你還沒有封閉的表和列名要求的`引號內,所以儘量

$rs = mysql_query("select * from `users` where `fb_userid`='$fb_user'") 
or die(mysql_error()); 
+1

這些標記不是必需的。 – rogeriopvl 2012-03-20 16:29:31

+0

嘿,我一直認爲包含下劃線的表/列名也需要反標記,但顯然你是對的:連字符只是這種情況。不過,我認爲,總是使用它們是一種很好的做法。 – Daan 2012-03-20 16:41:40

2

mysql_query返回一個資源,如果查詢進展順利,或FALSE如果出錯了。由於它抱怨你在布爾值上調用mysql_num_rows(),這意味着你的查詢出錯了。

0

很可能mysql_query()返回false,因爲有錯誤。

$rs = mysql_query("select * from users where fb_userid='$fb_user'") or die('Invalid query: ' . mysql_error());; 
相關問題