PHP MySql:打印每月发布的总归档

PHP MySql:打印每月发布的总归档,php,mysql,Php,Mysql,我需要以json格式打印Totalcount新闻存档,格式如下: 输出: ["January:31","February:28","March:0","April:130","May:450","June:0","July:0","August:0","September:0","October:520","November:20","December:31"] PHP代码: SELECT COUNT(*) AS id, YEAR(date) as `year`, MONTH(date) as

我需要以json格式打印Totalcount新闻存档,格式如下:

输出:

["January:31","February:28","March:0","April:130","May:450","June:0","July:0","August:0","September:0","October:520","November:20","December:31"]
PHP代码:

SELECT COUNT(*) AS id,
YEAR(date) as `year`,
MONTH(date) as `month`,
MONTHNAME(date) as `month_name`,
FROM `aticle`
GROUP BY `year`, `month`;
注:如果我们没有任何月份的新闻,请打印:0,即:三月:0,七月:0


我怎么能打印这个

您可以通过为所需的每个月/年组合生成一行来实现这一点。假设每月和每年至少有一个值,最简单的方法是:

SELECT COUNT(*) AS id, y.yr, m.mon, m.mname
FROM (select distinct year(date) as yr from article) y cross join
     (select distinct month(date) as mon, monthname(date) as mname from article) m left join
     article a
     on year(a.date) = y.yr and month(a.date) = m.mon
GROUP BY y.yr, m.mon;
否则,您必须找到一种方法来获取所有月份的列表,例如:

select 1 as mon, 'Jan' as mname union all
. . . 
如果未找到数据,则可以使用IFNULL检查数据是否应为0

请尝试下面给出的查询

SELECT IFNULL(COUNT(*),0) AS id, YEAR(date) as `year`, MONTH(date) as `month`, MONTHNAME(date) as `month_name`,FROM `aticle`GROUP BY `year`, `month`;

谢谢

您能发布到目前为止您所拥有的吗?StackOverflow将作为引导您找到答案的指南,我们不会为您编写代码。到目前为止,为了解决这个问题,您写了什么?选择COUNT AS num_of_articles,MONTHNAMEdate AS month_name FROM aticle GROUP BY MONTHNAMEdate@这是真的。但我对此一无所知。我的问题是这个@user27133您可以先执行查询并将结果加载到数组中,不是吗?最简单的方法不起作用。您要测试它吗?@user27133。我已经多次运行类似的查询。它是如何工作的?我为输出添加了以下代码:$value=array;foreach$stats为$key=>$value{$rows2[]=$value['mname'];}echo json_encode$rows2;输出为:[null,二月,null,二月]这对于整个月的打印都很简单。对于打印,我选择true way?