[英]PDO MySQL load count for each day into an array
我有一个投票系统,人们使用我的网站投票。 我记录每个投票,每个投票在表中一行。 即:
| id | ip | date |
-------------------------------------------
| 1 | ::1 | 2014-05-22 20:31:16.000000 |
由于我保存了日期,因此可以基于该月中的几天。
我有一个折线图,它将显示投票数最多的日子(从最低到最高排序)。
如何加载日期编号(例如1,2,3,4)和投票数量,以便将其存储在这样的数组中:
[
1 => 104,
2 => 234,
3 => 636,
4 => 105
];
因此,如果投票是在同一天进行的,它将被添加到当天的计数中。
其中键是日期,值是当天的票数。
我正在使用PDO ,如何完全那样加载它?
以下查询返回您所需的数据
SELECT DAY(`date`), COUNT(*)
FROM `your table`
WHERE YEAR(`date`) = YEAR(NOW()) AND MONTH(`date`) = MONTH(NOW())
GROUP BY DAY(`date`)
用$pdo->query(...)
包装它,并在结果上调用fetchAll()
。
您可能希望对查询的WHERE
约束进行一些调整,以使用不带函数调用的date
列(以便查询可以使用索引),例如, date BETWEEN ... AND ...
这留给您作为练习。
您可以执行以下操作:
$year = 2014;
$month = 01;
$array = array();
for($day = 1; $day <= 31; $day++)
{
$date = "$year.$month.$day";
$array[$day] = execute sql string "SELECT COUNT(*) FROM table WHERE date > $date 00:00:00 AND date < $date 23:59:59"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.