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