Mysql获取数组错误

时间:2010-08-21 23:02:27

标签: php sql mysql

我在今天第一次出现的网站上出现了错误,尽管几个月都运行良好。

  

警告:mysql_fetch_array():提供的参数不是第33行/web_directory/index.php中的有效MySQL结果资源

以下是这些行的代码。

<?  $sql = "SELECT 
            p.id as 'id',
            p.post_title as 'client',
            (SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = p.id AND `meta_key` = 'thumb1') as 'thumb'
            FROM
            `wp_posts` p
            INNER JOIN `wp_postmeta` pm ON (p.id = pm.post_id)
            INNER JOIN `wp_term_relationships` wtr ON (p.id = wtr.object_id)
            INNER JOIN `wp_term_taxonomy` tt ON (wtr.term_taxonomy_id = tt.term_taxonomy_id)
            WHERE 
            tt.term_id = 439
            AND tt.taxonomy = 'category'
            AND p.post_status = 'publish'
            GROUP BY p.id
            ORDER BY p.id DESC
            LIMIT 5
            ";
    $sql = mysql_query($sql);
    $i=0;
    while($s = mysql_fetch_array($sql))
    {
        $i++;
?> 

我不是网站的原始开发者,我对mysql没有太多的了解。感谢您提前获得的精彩答案!

2 个答案:

答案 0 :(得分:1)

您的查询可能有一些错误;尝试将or die(mysql_error())添加到mysql_query,如下所示:

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

mysql_query应返回您可以查看的资源标识符:

if (!is_resource($sql)){
  die(mysql_error());
}

答案 1 :(得分:0)

显然,您正在为mysql_fetch_array()提供有效的MySQL结果资源。

每当mysql_query因任何原因失败时,都可能发生这种情况。 (查询错误,数据库已经消失,网络已关闭等)。

在尝试迭代其数据之前,您应该检查对mysql_query的调用是否成功。如果你添加一张支票并打印出错误的真实含义,你可以自己确定它。

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

http://php.net/manual/en/function.mysql-query.php

在mysql_fetch_array()之前添加它将确保脚本在发生错误时死亡,包括实际的错误消息:

$res = mysql_query($sql);
if (!$res) {
    die('Invalid query: ' . mysql_error());
}