2017-06-07 6 views
-1

これはよくある問題ですが、すでに私の研究をしていて解決策を見つけることができませんでした。だから私はここにいる。プリペアドステートメント(fetch_assoc()関数)でSELECT中にPHPエラーが発生しました

私は取得していますエラーは次のとおりです。致命的なエラー:非オブジェクト

上メンバ関数FETCH_ASSOC()の呼び出しまず、私はmysqlndが有効になっています。第二に、私のクエリにはエラーはありません。私は問題なくphpmyadminで実行することができます。

SELECT * FROM photos WHERE name LIKE '%ait%' 
UNION 
SELECT photos.* FROM photos, photo_tag, tags 
WHERE photo_tag.photo_id = photos.id 
AND photo_tag.tag_id = tags.id 
AND tags.name IN('ait') 

そして、ここでは、エラーが(より具体的にFETCH_ASSOCで()関数)が起こるコードです:ここで

は、クエリのthatsが実行されている

$stmt = $this->conn->prepare($query); 
if($stmt){ 
    $stmt->execute(); 
    while($row = $stmt->get_result()->fetch_assoc()){ 
     $photo = new Photo(null, null, null, null); 
     $photo->id=$row["id"]; 
     $photo->userId=$row["user_id"]; 
     $photo->name = $row["name"]; 
     $photo->photoPath=$row["photo_path"]; 
     $result[] = $photo; 
    } 
    return $result; 
}else{ 
    var_dump($this->db->error); 
} 

もしあなたが私にこれを手伝ってもらえれば、私はとても感謝しています。

+0

FROM table1、table2、table3ではなくLEFT JOINを使用します。問題はSQLクエリ –

+0

@EduardVoidにあります。 JOINを作る方法はあります。 JOINや私のやり方を使って。 –

答えて

0

get_result()は、毎回ループを経由するのではなく、一度だけ呼び出すようにしてください。

$stmt->execute(); 
$stmt_result = $stmt->get_result(); 
while($row = $stmt_result->fetch_assoc()){ 
    $photo = new Photo(null, null, null, null); 
    $photo->id=$row["id"]; 
    $photo->userId=$row["user_id"]; 
    $photo->name = $row["name"]; 
    $photo->photoPath=$row["photo_path"]; 
    $result[] = $photo; 
} 
+0

あなたは男の仲間です!どうもありがとうございました! –

関連する問題