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格式化成你需要的任何日期,而且很容易移动。