Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 统计每天的帖子总数_Php - Fatal编程技术网

Php 统计每天的帖子总数

Php 统计每天的帖子总数,php,Php,我有一个功能,计算在整个网站上的帖子总数 function posts_count(){ $data=mysql_fetch_assoc(mysql_query("SELECT count(*) as total from posts")); return $data['total']; } 如何计算每天发布的新帖子数量? 例如,今天的新职位总数:55 我在想,当发布帖子时,数据库中有一个日期行,我可以这样做 function posts_count_today(){ $dat

我有一个功能,计算在整个网站上的帖子总数

function posts_count(){ 
$data=mysql_fetch_assoc(mysql_query("SELECT count(*) as total from posts"));
return $data['total'];
}

如何计算每天发布的新帖子数量? 例如,今天的新职位总数:55

我在想,当发布帖子时,数据库中有一个日期行,我可以这样做

function posts_count_today(){   
    $data=mysql_fetch_assoc(mysql_query("SELECT count(*) as total from posts WHERE date = '$date_today'"));
    return $data['total'];
}

其中$date_today显然是当前日期,但我确信有更好的函数,比如now()或类似的东西。您的表中有记录创建日期的列吗?下面是一个表格示例:

创建表foo(
foo_id int非空自动增量,
记录的时间戳非空默认当前时间戳
);

录制的
列不应由您的程序填充。将其留空将意味着记录将具有输入记录的时间戳

然后,您可以根据
recorded
列选择所有行

function posts_count_today(){   
    $data=mysql_fetch_assoc(mysql_query("
      SELECT count(*) as total 
      FROM posts 
      WHERE recorded > '$date_today'
    ")); //<== $date_today will have to be a format mysql understands. Can't remember off the top of my head but should be google-able.

    return $data['total'];
}
function posts\u count\u today(){
$data=mysql\u fetch\u assoc(mysql\u query(“
选择计数(*)作为总数
发帖
记录位置>“$date\u今天”

“,”/> p>是的,现在使用是一个好主意。如果日期列也包含一个时间组件,请考虑使用函数:

SELECT count(*) as total from posts WHERE DATE(date) = DATE(NOW())

这将获取今天发布的所有帖子,无论时间如何。

要获取数据库帖子记录中每天帖子的数量和日期,请尝试以下操作:

SELECT count(DATE(`date`)) as total,
DATE(`date`) as distinctDate
FROM posts
WHERE DATE(date) <= DATE(NOW())
GROUP BY DATE(`date`)
选择计数(日期(`DATE`))作为总数,
日期(`DATE`)作为distinctDate
发帖
WHERE DATE(DATE)试试这个sql

select count(*) as count, date from posts group by date
PHP代码

$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
  $data[$row['date']] = $row['count'];
}

如果您每天都看到count post,则可以使用此查询:

选择计数(*),从帖子中选择日期 按日期分组


但是这个查询返回到多行。

有意义。现在在我的数据库中,我有一行名为
date
,我确信我做得不对,但它是varchar(100),提交表单时,它会插入日期(“y-M-d l H:i a”)在
date
字段中,我是否应该将其从varchar更改为timestamp,并且它的行为将相同?是的,您肯定应该为该列使用timestamp或DATETIME类型。如果您始终希望使用todays date,请将默认值设置为CURRENT_timestamp。当我将其更改为timestamp时,我总是将0000-00-00:00:00插入到数据库中我找不到如何解决这个问题。它是否与插入日期有关(“y-M-d l H:i a”)?首先,您不需要使用特定的日期格式插入。您可以在读取日期时设置日期格式。似乎您总是插入当前日期,所以请使用当前时间戳或NOW(),例如:
插入到帖子中(
日期
)值(NOW())
.now()不起作用,如果我使用当前的时间戳,它会给我一个错误“中遇到一个格式不正确的数值”。我尝试了此回显日期('y-M-d l H:i A',$date)当我得到错误时,我将0000-00-00 00:00:00插入到数据库中,当我对类型使用TIMESTAMP时,请检查并查看该helpsId是否真的有用,我不断得到零。我将TIMESTAMP作为类型,插入now(),它告诉我“undefined now()variable”你能帮我一下吗?已经试了几天了!啊,好吧,我这里我们可以做一些不同的事情。你可以从插入中删除日期列,然后MySql将使用默认的当前时间戳为你将日期放在那里。这将是记录插入数据库的时间,在数据库所在的时区如果你真的想在上面的PHP中计算日期,我建议将日期列从TIMESTAMP改为int,并存储一个unix时间戳。这样就很容易排序,很容易使用javascript或PHP格式化成你需要的任何日期,而且很容易移动。