Mysql_fetch_array显示值为0或1的警告

时间:2012-11-05 18:14:56

标签: php mysql xampp mamp lamp

我的SQL查询计算符合条件的行数。有时此值为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.

3 个答案:

答案 0 :(得分:2)

您应该检查结果是否 false 。在查询sql-command时发生错误时会发生这种情况。如果结果为 false ,则应使用

打印错误
echo mysql_error();

(但是,您应该考虑使用PDO或mysqli,因为不推荐使用mysql_方法。)

最后,你的SQL错了。删除{},它应该有效。

答案 1 :(得分:1)

正如评论所说,不再推荐使用mysql_系列函数。

然而,为了解释实际发生的事情:

mysql_query不会直接返回您的计数结果,它会创建一个资源并返回一个数字标识符,其他mysql_函数将用于获取该资源。

然后错误消息告诉您,您有一个布尔值而不是资源。通常,这意味着您的mysql_query失败并返回false而不是资源标识符。

因此,您应首先检查结果是否为false并相应地运作。例如,使用mysql_error检查查询的错误。

答案 2 :(得分:0)

我认为你的sql查询很糟糕:

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

这些花括号会导致查询错误。这导致mysql_query不是一个有效的资源,这就是mysql_fetch_array抱怨的原因