プロが教えるわが家の防犯対策術!

<?php
try{
//~接続情報~ 省略
$sql = "SELECT user_id, content FROM comment WHERE post_id = ? ";
$datas=array($post_id); //記事のid
$stmt = $pdo->prepare( $sql);
$stmt->execute($datas);
$posts = $stmt->fetchAll();
}catch(PDOException $e){
die($e->getMessage());
}
?>

<h3>コメント一覧</h3>
<?php foreach ($posts as $post) { ?>
<p><?php echo nl2br($post['content']) ?></p>
<?php } ?>


上記のコードは、ある単一記事のidとひもづけて、記事のコメントの一覧を表示しています。この場合は、表示されるのは、コメントの一覧だけですが、コメントに投稿者の名前を表示したいと思います。

そこで、別にあるprofileテーブルを参照します。
コメントにある投稿者のuser_id と profileテーブルにあるuser_id が一致すれば、profileテーブルにあるuser_nameを表示するようにしたいのですが、( このように ⇒ "SELECT profile.user_name FROM profile LEFT JOIN comment ON profile.user_id = comment.user_id" )、これを上記のコードといっしょに書くには、どのようにかけばよいでしょうか?

A 回答 (1件)

……はて? 『このように』の SQL で comment テーブルを join しているんだから、現在の SQL で取得している comment テーブルからのデータを持ってこれそうに思うんだけど……。


SQL 文を

SELECT comment.user_id, comment.content, profile.user_name FROM profile LEFT JOIN comment ON profile.user_id = comment.user_id WHERE comment.post_id = ?

としてみてうまくいきませんか?
    • good
    • 0
この回答へのお礼

素早い回答ありがとうござました。まだ慣れていないので、テーブルが少し複雑になってくると分からなくなってきてしまいます。これでも2日悩んだので、非常にありがたいです。

お礼日時:2016/04/30 03:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!