我坚持使用我的MySQLi查询。场景是这样的: - 我需要为每个帖子选择最多10条评论。 - 我正在使用此查询,但它不能按我需要的方式工作 - 帖子ID在数组中
$comments_query = mysqli_query($con, "SELECT * FROM comments WHERE pid IN ({$decodedPostIds}) AND state='1' order by time LIMIT 10");
提前感谢所有建议和答案。 PS。我很抱歉我的英语。 彼得
答案 0 :(得分:1)
LIMIT 10
表示结果将包含来自HOLE查询输出的10行。
让我们在数据库中说你有2个帖子:post1包含5个相关的评论,post2包含10个相关的评论。
执行查询:
SELECT * FROM comments WHERE pid IN ({$decodedPostIds}) AND state='1' order by time
将返回:
现在,将LIMIT 10
添加到查询中,将返回孔结果的第1行,即从 post1:comment1 到 post2:comment5
你有2个解决方案:
为每个帖子制作一个循环并在该帖子上执行您的查询:
SELECT * FROM comments WHERE pid = $ post_id AND state ='1'按时间顺序LIMIT 10
获取所有帖子,并使用PHP代码对每篇帖子的前10条评论进行分组
伪代码:
$rows = mysqli_query($con,'SELECT * FROM comments WHERE WHERE pid IN ({$decodedPostIds}) AND state='1' order by time LIMIT 10');
foreach($rows as $row){
if(count($arr[$row['post_id']]) < 10){
array_push($arr[$row['post_id']],$row)
}
}
现在$ arr是一个数组,其中每个键都是post_id,第10个注释为值。
IMO:我更喜欢解决方案2(讨厌在循环中执行查询)。
希望它有所帮助。