意外警告 - mysql_fetch_array()期望参数1是资源,给定布尔值

时间:2014-02-28 10:52:19

标签: php mysql

我似乎遇到了mysql_fetch_array函数报告Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given的问题,即使我传递的参数是resource

我理解不推荐使用mysql_*函数,并且应该使用mysqli甚至更好的预处理语句来完成数据库交互,但是我无法更改用于与数据库交互的方法在这种情况下,因为它不是我有权执行此操作的软件。

结构如下:

$sql; //contains the query
if(!$result = mysql_query($sql)) {
    //report error
} else {
    if(mysql_num_rows($result) > 0) {
        while($instance = mysql_fetch_array($result)) {
            //runs once, even though there are 3 results.
        }
    } else {
        //no rows
    }
}

警告在行while($instance = mysql_fetch_array($result)) {上发出,表示我已将布尔值传递给函数。

当我在var_dump之前的行$resultwhile($instance = mysql_fetch_array($result)) {时,我收到了输出:

resource(22) of type (mysql result)

当我手动运行$sql中生成的查询时,我得到3个结果。

我很难找到解释为什么我收到这个警告,并且循环只执行一次。

同样,我了解不推荐使用mysql_,因为它不安全。不推荐使用,并且代码中存在某些不正确的事情,例如意外分配(在这种情况下显然是故意的),但无论如何,代码仍应正确执行。

1 个答案:

答案 0 :(得分:3)

鉴于你的while循环"运行一次,即使有3个结果",我也会在黑暗中拍摄并说你正在使用{{ 1}}错误地在循环内容中。