我的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.
答案 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抱怨的原因