Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:每天统计到目前为止的数据库行数_Php_Mysql_Database - Fatal编程技术网

Php MySQL:每天统计到目前为止的数据库行数

Php MySQL:每天统计到目前为止的数据库行数,php,mysql,database,Php,Mysql,Database,我对SQL和PHP相当陌生,一直在为以下问题而头疼 我正在寻找一个SQL查询(或与PHP过滤相结合),它可以提供以下结果:基本上是每天添加或删除一行的结果+到目前为止该表中的行数 例如: 2012-10-08 09:52:08 | 1 so far since beginning 2012-12-04 15:07:56 | 2 so far since beginning 2012-12-10 09:18:02 | 3 so far since beginning

我对SQL和PHP相当陌生,一直在为以下问题而头疼

我正在寻找一个SQL查询(或与PHP过滤相结合),它可以提供以下结果:基本上是每天添加或删除一行的结果+到目前为止该表中的行数

例如:

2012-10-08 09:52:08    |   1 so far since beginning
2012-12-04 15:07:56    |   2 so far since beginning
2012-12-10 09:18:02    |   3 so far since beginning

...


2013-06-06 09:50:13    |   67 so far since beginning
2013-06-13 13:46:41    |   70 so far since beginning
2013-06-17 14:42:39    |   69 so far since beginning
2013-06-19 14:19:26    |   74 so far since beginning
2013-07-05 13:21:45    |   75 so far since beginning

要计算数据库中的条目,查询将为:

$query = SELECT COUNT(*) FROM `table`
此查询将选择表中的每个条目,并计算行数

要处理连接,可以使用或

我建议您使用PDO,因为mysql已被弃用,正如官方文档所说:

从PHP5.5.0开始,此扩展已被弃用,将来将被删除

代码如下所示:

<?php
/** PDOs or MYSQL_* CONNECT HERE **/

echo date("Y-d-M h:m:s")."    |     ".$count." so far since beginning";
?>
date        records_this_day records_before_this_day
2010-02-04  27               0
2010-02-05  2                27
2010-02-06  1                29
2010-02-07  1                30

您可以使用GROUP BY查找今天的记录,使用子查询查找今天之前添加的行。比如说,

SELECT DATE(t.datefield) AS date, COUNT(*) AS records_this_day, 
(SELECT COUNT(*) FROM mytable t2 WHERE t2.datefield < DATE(t.datefield)) AS records_before_this_day 
FROM mytable t GROUP BY DATE(t.datefield);
但是它有点慢。当您使用此功能时,最好只在当天累积记录的值

编辑:显然,如果删除了一行,那么该行的历史记录就消失了。所以这可能不是你想要的

select count(*) cnt
     , DATE(date_column) the_date
  from tbl
 group
    by date with rollup
注意-如果有天没有任何条目,您将无法从此sql查询的结果集中获得该日期的行


修改器将添加一行,这将是所有行的计数。您可以标识该行,因为它的日期将为空值。或者,使用rollup省略
,只需自己对cnt列求和即可。

那么,您想要在给定日期添加和删除的行总数吗?我想创建一个列表,列出某一天通常有多少行。例如,两天前有69排,昨天有74排,今天有75排。
select count(*) cnt
     , DATE(date_column) the_date
  from tbl
 group
    by date with rollup