检查用户是否在不到两分钟的MySQL内上传了更多或正好50个文件

时间:2013-10-10 17:59:49

标签: php mysql

所以我有一个图像上传器,我想创建一个最小的机器人保护。 我的表结构如下所示:

| ID | uploader_ip | image_name | image_url_id | date
------------------------------------------------------
| 1  | 127.0.0.1   | bla.jpg    | fsdJGf       | UNIX Timestamp  (UPDATE ON: Create)

我想检查是否有更多或者恰好有50张图片/行,这些图片/行是在较少或完全两分钟内创建的。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您需要构建一个包含count和group的查询,并在date列上放置一个范围。如果您仅在最近两分钟内执行此操作,则查询将如下所示:

select count(*) from your_table where uploader_ip="<some ip>" and date > (now() - interval 2 minute) group by uploader_ip;

答案 1 :(得分:-1)

这是查询

Select count(*) from table 
where 
table.date >  now() - interval 2 minute
-- or the function date_sub(now(), interval 2 minute)
and id = 1

如果您想要在2分钟内完成上传的所有用户ID:

select id, 
  (select count(*) 
    from table 
    where id = t.id 
    and date > t.date - interval 1 minute 
    and date < t.date + interval 1 minute
  ) as total
from table t
where total >= 50