0
我有四个表其评论和回复选择的故事,并检查当前用户喜欢或不一个单一查询
帖子:
post_id title Userid description
1 test 20 TEXT
评论:
comment_id post_id Userid content
1 1 5 TEXT
2 1 36 TEXT
3 1 6 TEXT
个回复
reply_id comment_id Userid content
1 1 4 TEXT
2 2 5 TEXT
3 2 30 TEXT
喜欢:
post_id Userid
1 5
该网站开始在数据库中的最后20个故事中..现在假定用户ID(5)登录,例如post_id(1)显示为喜欢,所有帖子都会显示他们的评论和回复。我想在一个查询中完成,而不是在循环内嵌套循环。
我的代码:
$sql1 = $conn->prepare("SELECT * FROM posts ORDER BY post_id DESC LIMIT 20");
$sql1->execute();
while($row1=$sql1->fetch(PDO::FETCH_ASSOC)){
....
// <div class="post" id="<?php echo row1['post_id']; ?> </div>
.
.
....
$sql2 = $conn->prepare("SELECT * FROM comments WHERE post_id=:post_id");
$sql2 ->bindValue(':post_id', $row1['post_id']);
$sql2 -> execute();
while($row2=$sql2 -> fetch(PDO::FETCH_ASSOC)){
....
// <div class="comment" id="<?php echo row2['comment_id']; ?> </div>
.
.
....
$sql3 = $conn->prepare("SELECT * FROM replies WHERE comment_id=:comment_id");
$sql3 -> bindValue(':comment_id', $row2['comment_id']);
$sql3 ->execute();
while($row3=$sql3 ->fetch(PDP::FETCH_ASSOC)){ .... }
}
$sql_like=$conn->prepare("SELECT * from likes WHERE post_id = $row1['post_id'] AND user_id=$logged_user_id");
$sql_like->execute();
$sql_like->rowCount() > 1 ? //userlikes : //user does not like ;
}
谁说你这个解决方案将呼应只有一个评论?你是否试图运行它? – Alex
非常感谢!完美的工作^^ –
顺便说一下,喜欢表可能有许多记录与user_id相同的post_id和许多记录,但post_id和user_id组合在唯一的不同记录中,所以我想在爱情语句中有一个问题。 –