2016-04-15 12 views
0

更新の下にコメントを表示しようとしています。すべてのコメントをデータベースから配列として取得する方法を教えてください。下のコードは、私が$ article-> commentsを以下に示すように呼び出すと私に1つのコメントしか与えません。私は1つの結果しか得ません。行を数えると正確な数が得られますが、表示すると1つの結果しか得られません。左結合テーブルデータを配列として選択する方法

$articlesQuery = $db->query(" 
SELECT 
updates.id, 
updates.update_text, 
updates.posted_at, 
updates.user_id, 
updates.the_group, 
members_comments.comment AS comments, 

COUNT(articles_likes.id) AS likes, 
GROUP_CONCAT(members.id SEPARATOR '|') AS liked_by 

FROM updates 


LEFT JOIN articles_likes 
ON updates.id = articles_likes.article 

LEFT JOIN members 
ON articles_likes.user = members.id 

RIGHT JOIN members_comments 
ON members_comments.update_id = updates.id 

GROUP BY updates.id 

ORDER BY updates.id DESC 

LIMIT 3 
"); 

while ($row = $articlesQuery->fetch_object()){ 
$row->liked_by = $row->liked_by ? explode('|', $row->liked_by) : []; 
$articles[] = $row; 
} 

表示するには、これはエラーを表示しますが、私がしようとしていることが説明されています。

foreach($articles as $article): 
echo $article->update_text; 

foreach ($article->comments as $comment){ 
       echo $article->comment; 
} 
endforeach; 
+0

は$ articlesQuery-> fetch_object()$ articlesQuery-> fetch_arrayと()を交換してください。その後、すべての行が配列として返されます –

+0

これに従いますhttp://php.net/manual/en/mysqli-result.fetch-array.php –

+0

@BikashPaul、それは私がそのクエリでやっているすべてのことを台無しにします。問題を解決しません。御時間ありがとうございます。 –

答えて

0

私はループが間違っていると思います。

$記事エコーコメントでforeachの$の記事(これは今1行です)

のforeachコメント

ので、このコメントは唯一の1行からのコメントになりますか?

私が誤解していない限り、これはあなたのコードのようになります。

foreach($articles as $article) { 
     print $article->update_text."\n"; 
     print $article->comment."\n"; 
} 
+0

これは、コメント部分をループする前に行ったことです。コメントテーブルは更新テーブルに結合されたままであり、各更新について多くのコメントが存在することがあります。私はすべてのコメントを出したい。コメントとしてCOUNT(members_comments.comment)を使用すると、複数の結果が得られるかもしれませんが、すべてのコメントをどのように取得できますか? –

+0

私はそれを見ることができるように、そのクエリのサンプルデータをどこかに貼り付けることができますか? –

+0

Foreach($ articles-> user_id){ $ article->コメントを印刷します。 "\ n"; } ユーザーIDごとにすべてのコメントを印刷しています –

関連する問題