想象一下,我们让用户能够使用我们的网站发送电子邮件,但我们希望限制他们每天不要发送超过30封电子邮件(24小时)。
因此,通过发送每封电子邮件,我们将在我们的表格中插入记录,然后当他/她想要发送另一封电子邮件时,我们会检查他是否在24小时内发送了30多封电子邮件。
我们如何用PHP检查?
我们查询db,我们为这个用户获得了20条记录,记录的日期是:
2012-08-14 13:10:58
2012-08-14 12:45:47
2012-08-14 16:32:18
2012-08-14 19:10:40
...
...
...
我们如何才能实现这样的规则?
谢谢
答案 0 :(得分:5)
不要在PHP中检查它,使用这样的简单查询来直接从数据库中获取答案。
select
count(*)
from
yourTableName
where
dateCol>date_sub(now(), interval 1 day)
and userID=...
这会给你计算。
编辑:正如鲍里斯指出的那样,这将计算每天,您可以更改它以检查最后24小时的时间段如下:
select
count(*)
from
yourTableName
where
dateCol>date_sub(now(), interval 24 hour)
and userID=...
编辑2:在检查之后,Riad正确地指出,这两个确实返回相同的值。 1 day
被视为1天,而不是日历日期。如果日期列的日期时间为“2012-08-13:13:00:00”,则date_sub( dateCol, interval 1 day)
将返回“2012-08-12:13:00:00”。