假设我正在尝试显示视图数量(用户将点击“已查看”按钮,该按钮会将PostID和userID发送到tb_views数据库
(SELECT COUNT(Viewed) FROM tb_views WHERE Viewed = 6) AS ViewCount,
它工作正常,因为计数将被计入postID“6” 我将通过while循环运行该语句,这意味着如果有10个帖子,将显示10个帖子
现在的问题是如何将“Viewed =”分配给动态表单,它会自动更改每个生成的帖子?目前,如果我将其设置为“6”,则回显$ ViewCount的所有10个帖子将显示帖子6的观看次数而不是他们的帖子
我可以使用循环
正确生成PostID和所有内容的帖子提前致谢!
答案 0 :(得分:0)
SELECT Viewed, COUNT(Viewed) FROM tb_views GROUP BY Viewed
试试这段代码。您还可以将group by语句与where条件组合在一起,但如果您想获取每个postid的视图计数,那么如果您要使用where条件并且只使用1个postid,那么这是您的查询,那么您不需要使用它小组了。
答案 1 :(得分:0)
您需要执行多个JOIN查询。这是一个例子,应该接近你正在寻找的东西:
$sql = "SELECT tb_users.sName, tb_users.sCountry, COUNT(tb_views.Viewed) AS ViewCount, tb_posts.id AS postID
tb_posts.sPost, tb_posts.sPlace, tb_posts.Time, tb_posts.iUserID
FROM tb_posts
LEFT JOIN tb_views ON tb_views.postID = tb_posts.id
LEFT JOIN tb_users ON tb_posts.userID = tb_users.id
ORDER BY id desc";
$mysqli -> prepare ($sql);
确保仔细检查所有表和值是否正确,因为我无法看到您的数据库实际上是什么样的,我不得不猜测;)
这是一个使用别名的版本,这使它更清洁:
$sql = "SELECT u.sName, u.sCountry, COUNT(v.Viewed) AS ViewCount, p.id AS postID
p.sPost, p.sPlace, p.Time, p.iUserID
FROM tb_posts AS p
LEFT JOIN tb_views AS v ON v.postID = p.id
LEFT JOIN tb_users AS u ON p.userID = u.id
ORDER BY id desc";
$mysqli -> prepare ($sql);