Php PDO MySQL每天装入数组的负载计数
我有一个投票系统,人们通过我的网站投票。我记录每一张选票,每一张选票都是表格中的一行。即:Php PDO MySQL每天装入数组的负载计数,php,mysql,sql,arrays,pdo,Php,Mysql,Sql,Arrays,Pdo,我有一个投票系统,人们通过我的网站投票。我记录每一张选票,每一张选票都是表格中的一行。即: | id | ip | date | ------------------------------------------- | 1 | ::1 | 2014-05-22 20:31:16.000000 | 因为我保存了日期,所以可以将其基于本月的天数 我有一个折线图,它将显示得票最多的日子(从最低到最高排序) 如何加载日数(例如1,2,3,4)和
| 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。。。和…
。这是留给您的一个练习。您可以做一些事情,链接如下:
$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"
}
$year=2014年;
$month=01;
$array=array();
对于($day=1;$day)sql或php,您有什么问题?我希望您知道IP不能识别唯一的人。许多人可以共享一个IP地址,一个人可以被视为来自多个IP地址addresses@jeroen构建查询以按天加载计数。使用fetchAll(PDO::FETCH_KEY_PAIR)
以key=>value格式获取结果。@Jay Blanchard我无法理解您的回滚!PDO::FETCH_key_PAIR
是此答案的一部分…我不会在只需要一个参数的情况下复制答案。如果我有权编辑答案,我会编辑答案!!!请自便@Thiagofrana,但当更改影响答案时当然,你可以期待有人可能不会批准它们或将它们回滚。正如我所说的,不需要复制,只需对提供答案的海报发表评论即可。在fetchAll()
中可能有几种变体,因此你放在那里的只是一个建议。部分问题是:“我如何加载日数?”(例如1,2,3,4)和投票量,因此它将存储在一个数组中,其中键是天数,值是投票量“PDO的方法是在fetchAll()中使用常量PDO::FETCH_key_PAIR
,即使是fetchAll()的所有变量
,遇到的问题是。每天1个查询,请不要。我知道,但是有人否决了第一个解决方案,所以我写了一些东西。这只是个坏主意,我建议你删除它