繁体   English   中英

每天将PDO MySQL负载计数放入数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM