MySQL错误:mysql

可能重复:
警告:mysql_fetch_ *期望参数1是资源,布尔给定错误

我最近从客户那里得到了一份工作,我必须将折旧的php旧代码更改为新的代码。 在那段代码中,我遇到了mysql_db_query,我将其转换为mysql_query,但发生错误

mysql_fetch_array期望参数1是资源,布尔给定

//the old code was like:

$result = mysql_db_query($mysql_db,"SELECT Hierarchy FROM MenuSystem WHERE LENGTH(Hierarchy) >= 2 AND LOCATE(" . $_SESSION['AccessLevel'] . ",AccessLevels) <> 0;");

//and my new code is :

$result = mysql_query("SELECT Hierarchy FROM MenuSystem WHERE LENGTH(Hierarchy) >= 2 AND LOCATE(" . $_SESSION['AccessLevel'] . ",AccessLevels) <> 0");

请告诉我这个问题

它指的是第11行,while循环的末端括号

while ($row = mysql_fetch_array($result)) {
    $ConcatHierarchy .= $row["Hierarchy"];
}

我看不到唯一的代码会导致错误。 但是,如果您想将$ result作为数组使用,那么可能会产生问题,因为我们需要先检查它。 如果查询失败,它将返回一个FALSE而不是一个资源,即一个数组。

(我的意思是你稍后将资源作为一个数组来使用,但是$ result是一个FALSE或者一个可以通过调用mysql_fetch_array()使用的resrouce。感谢您的评论)

其实你可以检查其他帖子,如:mysql_fetch_array()期望参数1是资源问题

正如手册所建议的那样,ppl现在可能更喜欢PDO:不鼓励使用这种扩展。 相反,应该使用MySQLi或PDO_MySQL扩展。


你正在做一个字符串操作,在缺少引号的地方将它变成一个字符串:

... AND LOCATE(" . $_SESSION['AccessLevel'] . ",AccessLevels) <> 0");
               ^--                             ^---

指示的点需要单引号( ' )。 现在你可能会嵌入一些字符串,比如'SuperUser'。 如果没有引号,MySQL就会将其视为字段名称,这几乎可以肯定不存在。

如果你的代码中有适当的错误处理,你会立即从错误信息中看到这一点:

$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^--- bare minimum
链接地址: http://www.djcxy.com/p/69413.html

上一篇: MySQL error: mysql

下一篇: php