2011-10-03 78 views
0

希望有人能帮我解决一个问题。这似乎是一个语法问题,但我不能倒锤究竟是什么问题...我使用了最新版本的MySQL需要有关mysql错误的帮助

我收到此错误:

“警告:mysql_fetch_assoc()预计参数1是资源,在C定的boolean:... \ testing_album_func.php第14" 行

这里是我的代码:

function get_listings() { 

    $listings = array(); 

    $listings_query = mysql_query("SELECT `class_ads`.`ad_id`, `class_ads`.`created_on`, 
       LEFT(`class_ads`.`title`, 50) as `title`, LEFT(`class_ads`.`description`, 50) as 
       `description`, `class_ads`.`price`, `class_ads`.`quantity`, 
       COUNT(`images`.`image_id`) as `image_count` FROM `class_ads` LEFT JOIN `images` ON 
       `class_ads`.`ad_id`=`images`.`ad_id` WHERE `user_id`='".$_SESSION['user_id']."' GROUP 
       BY `class_ads`.`ad_id`"); 


    while ($listings_row= mysql_fetch_assoc($listings_query)) { 

     $listings[] = array(
     'ad_id' => $listings_row['ad_id'], 
     'created_on' => $listings_row['created_on'], 
     'title' => $listings_row['title'], 
     'description' => $listings_row['description'], 
     'price' => $listings_row['price'], 
     'quantity' => $listings_row['quantity'], 
     'image_count' => $listings_row['image_count'] 
     ); 

    } 

    return $listings; 
} 
+0

您没有测试您的查询是否有错误。请参阅mysql_query()上的PHP手册或[参考:什么是使用mysql扩展的完美代码示例?](http://stackoverflow.com/q/6198104) –

+0

我认为问题是您的SQL语句。 SQL不作为资源返回。正因为如此,你得到这个错误。你可以尝试更多的基本声明而不是这个,用于测试?例如:'SELECT ad_id FROM class_ads' – Eray

+1

为什么很多人在没有错误检查的情况下编写mysql_query()查询?有没有一个破碎的教程在某处显示它? –

回答

1

mysql_query返回false,如果有一个错误。

你应该把检查,如:

if(!$listings_query) { 
    die('An error occurred. The message is: ' . mysql_error()); 
} 

你的SQL语句看起来有点古怪,所以你也应该打印出实际的查询,并确保它看起来不错。

+0

谢谢你,我添加了错误报告,它回来了: “An error occurred。这条消息是:列'user_id'中的where子句是不明确的“。我能够在两秒内修复它。 谢谢STACKOVERFLOW,你是最棒的!lol。说真的,谢谢,我无法想象它 –

1

你也应该为首发,添加错误到您的查询报表,所以你知道到底发生了什么错误

$listing_query = mysql_query(".....") or die (mysql_error()); 

,你调用一个函数内的查询,它可能是链接标识符没有被传递,在函数的范围内。尝试在函数内连接和选择数据库,或者将链接资源作为参数传递给函数,或者让它成为全局函数(不要这样做)。

第三,您可以尝试在phpmyadmin或命令行等工具中运行您的查询,以便您一次看到查询失败以及原因;在将它们放入php脚本之前,我通常会用复杂的查询来做到这一点。

,错误可能是WHERE user_id='".$_SESSION['user_id']."',但我不确定它(你不需要告诉表这列的驻留?)。看到上面的三个评论,你会发现自己;)

+0

你说的错误是错的,我认为我不需要指定,因为字段user_id驻留在两个表上......但我当然了,再次感谢。 –

1

执行数据库中的查询时发生错误。您应该检查您尝试运行的SQL,可能是名称不正确的字段。要获得有关该错误的更多详细信息,请使用mysql_error函数。

echo mysql_error($listings_query);