2012-11-05 27 views
-1

我的SQL查詢計算滿足條件的行數。有時這個值是0或1.這會產生一個關於返回布爾值的錯誤。Mysql_fetch_array顯示值爲0或1的警告

這怎麼可以避免?我不應該使用mysql_fetch_array

// Query the db to count the # of comments. 
$price_change_dbo = 
    mysql_query(" 
     SELECT COUNT(1) AS comment_count 
     FROM comments 
     WHERE user_id = '{$user_id}';" 
    ); 

// Use the result. 
$price_change_row = mysql_fetch_array($price_change_dbo); 

這裏是警告:

Warning: mysql_fetch_array() expects parameter 1 to be resource, 
     boolean given in /Applications/MAMP/... on line 1. 
+2

根本不應該使用任何'mysql_'函數。看看'PDO'。 – clentfort

+1

@clentfort爲什麼不'mysqli_'? – Kermit

+0

你的查詢是錯誤的.... –

回答

1

正如評論所說,不再推薦使用mysql_函數家族。

然而,爲了說明的緣故實際發生的情況:

mysql_query不會直接返回你的計數的結果,它會創建一個資源,並返回的其他mysql_功能將用來搶資源的數字標識符。

錯誤消息然後告訴你,而不是資源,你有一個布爾值。通常,這意味着您的mysql_query失敗並返回false而不是資源標識符。

因此,您應該首先檢查結果是否爲false並相應地執行。例如,使用mysql_error來檢查查詢的錯誤。

2

您應該檢查是否結果IST 。在查詢sql-command時發生錯誤時會發生這種情況。如果結果IST ,你應該

echo mysql_error(); 

打印錯誤(不過,你應該考慮使用PDO或mysqli的,因爲mysql_方法已過時)。

最後,你的SQL是錯誤的。刪除{},它應該可以工作。

0

我覺得你的SQL查詢不好:

" SELECT COUNT(1) AS comment_count 
    FROM comments 
    WHERE user_id = '".$user_id."'" 

這些花括號在查詢中導致錯誤。這導致mysql_query不是有效的資源,這就是爲什麼mysql_fetch_array抱怨

相關問題