3

想象一下,我们让用户能够使用我们的网站发送电子邮件,但我们希望限制他们每天(24 小时)发送不超过 30 封电子邮件。

因此,通过发送每封电子邮件,我们将在表格中插入一条记录,然后当他/她想发送另一封电子邮件时,我们检查他是否在 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
...
...
...

我们如何实现这样的规则?

谢谢

4

1 回答 1

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”。

于 2012-08-14T09:10:24.403 回答