-1

我的 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.
4

3 回答 3

2

您应该检查结果是否为false。当查询 sql 命令时发生错误时,就会发生这种情况。如果结果是false,你应该打印错误

echo mysql_error();

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

最后,你的 SQL 是错误的。删除 {},它应该可以工作。

于 2012-11-05T18:19:06.267 回答
1

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

但是,为了解释实际发生的事情:

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

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

因此,您应该首先检查结果是否正确false并采取相应的行为。例如,用于mysql_error检查查询出了什么问题。

于 2012-11-05T18:23:03.157 回答
0

我认为你的 sql 查询不好:

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

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

于 2012-11-05T18:19:10.073 回答