我的代码就像这样,
$sql = "SELECT Month(time) as Month, Year(time) as Year,
title, COUNT(*) AS total FROM posts GROUP BY Year, Month ORDER BY time DESC";
$stmt = $conn->query($sql);
if ($stmt->num_rows > 0) {
while($row = $stmt->fetch_array()){
echo "<div class=title>" . $row["title"]. "</div>";
}
}
它应该输出4个标题,
Bellavisa
Mist Neting
Turkey is cool!
Cock of the Rock
但它只输出
Bellavisa
Turkey is cool!
Cock of the Rock
请注意,bellavisa和mist neting在同一年份和月份,(设置存档列表)
修改
以下是一些表格数据
title "bellavisa" content "yadadada" time "timestamp ..." Author "author"
title "mist nesting" content "yadadada" time "timestamp ..." Author "author"
答案 0 :(得分:3)
好吧,title
是每个帖子,所以为了获得所有标题,你应该使用GROUP BY
,而COUNT(*)
每个月,所以要获得你需要的计数{{1你的方式,所以在一个简单的GROUP BY
你可以选择一个或另一个,但不能两者。
要同时选择两者,您需要使用子查询,类似于
SELECT
有效地,查询选择所有帖子,并且每个帖子计算一个计数。这不是最有效的方法,如果每个帖子都有唯一的ID,你可以使用连接重写它。但对于具有合理大小的表,此查询将正常工作。