gpt4 book ai didi

php - 输出帖子评论量

转载 作者:行者123 更新时间:2023-11-29 07:32:29 25 4
gpt4 key购买 nike

我正在尝试在显示帖子标题的索引页上显示帖子的评论量。

我可以显示索引上的标题、正文、发布者和创建日期,但索引的评论数量除外。即使我的查询设置正确,我也很难从数据库中选择它。

<?php if(empty($posts)): ?>
<p>There are currently no posts.</p>
<?php else: ?>

<?php foreach($posts as $post): ?>

<div class="post">
<div class="title"><a href="<?php echo BASE_URL; ?>/post.php?post=<?php echo $post['id']; ?>"><?php echo $post['name']; ?></a></div>
<div class="short-body"><?php echo $post['body']; ?> <a href="#">Read more</a></div>
<div class="posted-by">Posted by <?php echo $post['user']; ?></div> <div class="date">On <?php echo $post['created']; ?>

| <?php foreach ($comments as $comment): echo $comment[0]; ?> comments <?php endforeach; ?> </div>
</div>

<?php endforeach; ?>

<?php endif; ?>

通过上面的代码,页面上显示了所有内容,除了评论量。

这是评论代码及其背后的查询:

    $posts = $db->query("SELECT name,body,id,created,user FROM posts ORDER by id DESC")->fetchAll(PDO::FETCH_ASSOC);

$id = $posts['id'];
$comments = $db->prepare("SELECT COUNT(*) FROM comments where $post_id=:post_id");
$comments->execute(['post_id' => $id]);
$comments = $comments->fetch(PDO::FETCH_NUM);

我确信我的问题是 $id 没有被正确使用。虽然我不知道该放什么。 post_id 分配给帖子的 id,评论存储在数据库中。我已经尝试了很多方法,但仍然不起作用。

最佳答案

我认为您可以通过单个查询检索帖子信息和评论数量,这应该可以避免您的问题并且效率更高;例如:

SELECT
posts.name,
posts.body,
posts.id,
posts.created,
posts.user,
count(comments.id) AS comments_count

FROM posts
LEFT JOIN comments ON comments.post_id = posts.id

GROUP BY posts.id DESC

根据您的原始查询,我认为问题在于 $posts 包含多行,因此 $posts['id'] 不存在,但 $posts[0]['id'] 也是如此,$posts[1]['id'] 也是如此...如果您想保留原始查询,您应该迭代通过 $posts 将评论数与结果中的每个帖子关联起来。

关于php - 输出帖子评论量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com