2016-05-07 15 views
-2

我在我的數據庫中這兩個表:獲得「致命錯誤:調用一個成員函數FETCH_ASSOC()非對象上的」在SQL查詢

聲明

enter image description here

和標籤

enter image description here

我試圖執行這個查詢

SELECT s.id, s.name, s.preview, s.approved FROM Statements s JOIN Tags t ON s.id = t.probID WHERE s.approved = TRUE AND t.tag IN ("Geometry") GROUP BY s.id, s.name, HAVING COUNT(DISTINCT t.tag) = 1

但得到 「致命錯誤:調用一個成員函數FETCH_ASSOC()的非對象在C於:\瓦帕\ WWW \ file.php上線46」,其中,第46行是while($row = $res->fetch_assoc()){

我的查詢有問題嗎?

回答

1

我想你正在使用MySQLi,如果我錯了,請糾正我。

在我使用它的時間跨度中,無論何時出現這種問題,我都遇到了在執行前我無法識別的查詢問題。鑑於我的查詢失敗,沒有SQLStatement對象(或任何其名稱)被創建。因此,不能調用fetch_*方法!

我相信你的問題是一個非常簡單的問題:你的HAVING子句之前有一個尾隨的逗號,這會使你的查詢搞亂。我在我的電腦上覆制了你的SQL結構和查詢,並且一切正常。

SELECT 
    s.id, s.name, s.preview, s.approved 
FROM 
    Statements s JOIN Tags t ON s.id = t.probID 
WHERE 
    s.approved = TRUE AND t.tag IN ('Geometry') 
GROUP BY s.id, s.name 
HAVING COUNT(DISTINCT t.tag) = 1 

試試這個吧。 只是注意:每當我必須處理SQL中的true or false,我把它作爲一個*INT UNSIGNED,我覺得用1作爲true0false從來沒有產生任何問題,而使用TRUEFALSE有時做!這是不是這種情況,無論如何:)

0

如果您使用var_dump($result);請勿使用它。取而代之的是,把結果放在$ result變量中。 $result = $stmt->get_result();

+0

我不使用'var_dump',我使用'$ res = $ conn-> query($ select);' – user5718409

相關問題