2016-05-07 3 views
-2

私は、データベース内のこの2つのテーブルがあります。:SQLクエリの「致命的なエラーを非オブジェクトにメンバ関数FETCH_ASSOC()の呼び出し」

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

が、取得 "致命的なエラー:C内の非オブジェクトのメンバ関数FETCH_ASSOC()の呼び出し:\ WAMP \ WWW \ file.phpライン46の" 第46行はwhile($row = $res->fetch_assoc()){

あり、

クエリに問題がありますか?

答えて

1

私はあなたが間違っている場合は、私を修正するMySQLiを使用していると仮定します。この種の問題は、私に提示された時はいつでも、私は、それを使用する時間のスパンで

は、私は、実行する前に確認することができませんでしたクエリに問題がありました。クエリが失敗したので、 SQLStatementオブジェクト(または名前が何であれ)は作成されませんでした。したがって、それには fetch_*メソッドを呼び出すことはできませんでした!

私はあなたの問題は非常に簡単なものであると信じて:あなたはあなたのクエリアップをいじりされ、あなたのHAVING句の前に末尾のコンマを持っています。私はあなたのSQL構造と私のPC上のクエリを再現し、すべて正常に働いた。

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としてそれを保存していたときに、私はfalseとしてtrue0として1を使用してのように感じるTRUEまたはFALSEを使用することが時々ありませんが、すべての問題を作成することはありません!これは、とにかく、そうではありませんでした:)

0

var_dump($result);を使用する場合は、使用しないでください。その代わりに、結果を$ result変数に入れてください。 $result = $stmt->get_result();

+0

私は 'var_dump'を使用していない、私は($選択)' $ RES = $ conn->クエリを使用しています。 ' – user5718409

関連する問題