警告:mysql_fetch_array()要求参数1为resource,boolean给出

时间:2011-06-28 18:20:44

标签: php mysql

  

可能重复:
  PHP: Warning: sort() expects parameter 1 to be array, resource given

我收到此错误:

  

警告:mysql_fetch_array()期望   参数1是资源,布尔值   在

中给出
$sql = dbquery("SELECT * FROM `channels` WHERE `cat_slug` = ".$cat." ");
while($row = mysql_fetch_array($sql)){
$category =  $row["cat_name"];
$slug =  $row["cat_slug"];
// other
}

和$ cat可以是“搞笑”

如何更改代码才能完成?

2 个答案:

答案 0 :(得分:1)

您正在使用PEAR,因此您需要先设置对象:

$db =& DB::connect('mysql://usr:pw@localhost/dbname');
if (PEAR::isError($db)) {
    die($db->getMessage());
}

然后创建一个资源:

$res =& $db->query("SELECT * FROM `channels` WHERE `cat_slug` = '$cat'");

然后,如果fetchmod设置为ordered,则可以获取数组:

while ($res->fetchInto($row)) {
    echo $row[0] . "\n";
}

看起来你正在使用标准PHP和PEAR的混合物。

在标准PHP中,您需要这样做:

$sql = "SELECT * FROM channels WHERE cat_slug = '$cat'";
$res = mysql_query($sql, $conn) //where $conn is your db link stuff

然后你可以做一个获取数组

答案 1 :(得分:0)

您在查询中遇到语法错误,和/或数据库出现其他问题。在dbquery函数中,您需要具有以下内容:

$result = mysql_query($sql) or (die(mysql_error());

将中止脚本并输出查询失败的原因。

但是,根据您的查询字符串以及您的数据,错误是由于查询中$cat周围缺少引号:

SELECT ... WHERE `cat_slug`=funny;

除非您的表中有一个名为“funny”的字段,否则这是一个语法错误。你需要:

SELECT ... WHERE `cat_slug`='funny';

(注意引号)。