【问题标题】:Mysql_fetch_array is showing a warning for values of 0 or 1 [duplicate]Mysql_fetch_array 显示值为 0 或 1 的警告 [重复]
【发布时间】:2012-10-25 15:11:16
【问题描述】:

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

【问题讨论】:

  • 您根本不应该使用任何mysql_ 函数。看看PDO
  • @clentfort 为什么不mysqli_
  • 我同意,但是在一些较旧的网站上工作,他们不会欣赏我是目前唯一使用 PDO 的人。不过谢谢:)
  • 感谢外星人先生 - 这只是在 SO 帖子中,已修复。
  • $result = mysql_query(...) or die(mysql_error())。永远不要假设查询已经成功。

标签: php mysql xampp mamp lamp


【解决方案1】:

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

打印错误
echo mysql_error();

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    因此,您应该首先检查结果是否为false 并采取相应措施。例如,使用mysql_error 来检查查询出了什么问题。

    【讨论】:

      【解决方案3】:

      我觉得你的sql查询不好:

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

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

      【讨论】:

        猜你喜欢
        • 2013-02-23
        • 2011-08-28
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        相关资源
        最近更新 更多