mysql - 找出最近30条记录中是否存在输入

时间:2013-04-08 14:36:44

标签: php mysql

我想知道注册用户的ip是否存在于最近30条记录中。这有助于我防止多次注册。我在mysql中尝试这样做有困难。这是我到目前为止的地方:

检查所有记录中多个ip的旧查询:

$same_ip_count = mysql_num_rows(mysql_query("SELECT * FROM login_users WHERE ip='".$ip."'"));

失败的新代码:

$same_ip_count = mysql_num_rows(mysql_query(
"SELECT 'user_id'
FROM (
    SELECT *
    FROM login_users
    ORDER BY user_id DESC
    LIMIT 30
) AS t
WHERE t.ip = '".$ip."'"));

对sql有点新意,所以在这一点上任何建议都会很棒。

修改

要明确 - 我想只搜索最后30条记录。我不想搜索所有记录,然后将它们限制为30.

3 个答案:

答案 0 :(得分:1)

首先使用子查询来获取最后30个项目。然后,您可以从IP匹配的30列表中进行选择。

Select * From
(SELECT *
        FROM login_users
        ORDER BY registration_date DESC
        LIMIT 30) a
 WHERE a.ip = '".$ip."'

答案 1 :(得分:0)

Mysql不知道最后30条记录是什么。如果使用自动递增主键,则可以按后续顺序按该键进行排序。

答案 2 :(得分:0)

试试这个。

$query = mysql_query(
"SELECT 'user_id' as result from `login_users` WHERE ip = '".$ip."' ORDER BY user_id DESC LIMIT 30");

$same_ip = mysql_num_rows($query);