按天和月统计(php)

时间:2016-05-27 22:17:13

标签: php mysql mysqli

我希望按日期和月份对我的网站进行统计。年份 我想制作date()函数

好吧,首先我创建一个有3个col

的数据库

标识 日期 统计

例如今天我们是27-05-2016,所以,数据库有

1 | 27-05-2016 | 5

当我有新的一天插入新行时,例如

2 | 28-05-2016 | 20

我用while等显示结果

但我有一个问题我想知道如何在一天结束时插入新的一天?如何在结束当天自动插入我为新的一天插入新日期?

5 个答案:

答案 0 :(得分:0)

我不是好用PHP但我非常确定你能做的最好就是等待交互(登录等),然后检查时间并将其与上次记录的时间进行比较。所以举个例子。 jDoe787登录时间为6月5日上午6点56分,记录正在退出。(这里服务器更新了上次有人登录的时间)j请稍后在上午12:01登录,脚本会打开,因为它是一个不同的一天,然后他最后一次登录,所以它将数据库更改为新的一天,并做任何它需要的

答案 1 :(得分:0)

从数据库SELECT * FROM stat_table ORDER BY date DESC;

获取最新日期

将最新日期保存在变量$ latest_date = $ data ['date'];

  if (current_date = $latest_date) {
    update database
  } else {
    insert new row
  }

答案 2 :(得分:0)

尝试使用REPLACE INTO运算符。但首先你必须在你的DATE字段上创建一个独特的索引

答案 3 :(得分:0)

始终使用当前日期运行更新查询,如果更新返回false,则插入新条目

答案 4 :(得分:0)

我想您希望每个不同日期都有一行表格,并且您希望使用新数据更新statistics列。

你可以在MySQL中干净利落地使用一些特定于MySQL的扩展。

首先,您创建表格并在UNIQUE INDEX列上添加date。这种表定义可以解决问题。 (这是标准的SQL。)

CREATE TABLE `stat` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `date` DATE NOT NULL,
    `statistics` INT(11) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `date_index` (`date`)
);

请注意,使用此定义,INSERT重复date值的尝试将失败。但这很好,因为MySQL具有INSERT ... ON DUPLICATE KEY UPDATE...语法。 (这是特定于MySQL的。)

如有必要,为当前日期插入新行,否则要在当前日期的statistics列中添加一行,您可以使用以下语句:

INSERT INTO stat (date,statistics) VALUES (CURDATE(), 1)
ON DUPLICATE KEY UPDATE statistics = statistics+1;

此语句的第一行在stat表中创建一行,并将statistics列设置为1。如果该行已存在,则第二行增加statistics

请注意另一件事:id列并非绝对必要。您可以使用date列作为主键。此表定义适合您。

CREATE TABLE `stat` (
    `date` DATE NOT NULL,
    `statistics` INT(11) NOT NULL,
    PRIMARY KEY (`date`)
);