首页 文章

警告:mysql_fetch_array()期望参数1是资源,在[重复]中给出布尔值

提问于
浏览
0

可能重复:PHP:警告:sort()期望参数1是数组,给定资源

我收到此错误:

警告: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

    您正在使用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

    您在查询中有语法错误,和/或数据库有其他错误 . 在dbquery函数中,您需要具有以下内容:

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

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

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

    SELECT ... WHERE `cat_slug`=funny;
    

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

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

    (注意引号) .

相关问题