检查它是否在24小时内发生

beh*_*z4d 3 php mysql date

想象一下,我们正在为用户提供使用我们网站发送电子邮件的能力,但我们希望限制他们每天(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
...
...
...
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Flu*_*feh 5

不要在PHP中检查它,使用这样的简单查询来直接从数据库中获取答案.

select 
    count(*) 
from 
    yourTableName 
where 
    dateCol>date_sub(now(), interval 1 day) 
    and userID=...
Run Code Online (Sandbox Code Playgroud)

这将给你计数.

编辑:正如鲍里斯指出的那样,这将计算每天,您可以更改它以检查最后24小时的时间段,如下所示:

select 
    count(*) 
from 
    yourTableName 
where 
    dateCol>date_sub(now(), interval 24 hour) 
    and userID=...
Run Code Online (Sandbox Code Playgroud)

编辑2:在检查之后,Riad正确地指出,这两个确实返回相同的值.将1 day被视为恰好1天,而不是日历日期.如果日期列的日期时间为"2012-08-13:13:00:00",date_sub( dateCol, interval 1 day)则会返回"2012-08-12:13:00:00".