2011-10-03 77 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);