0

我想知道最近30条记录中是否存在注册用户的ip。这将帮助我防止多次注册。我尝试在 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。

4

3 回答 3

1

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

Select * From
(SELECT *
        FROM login_users
        ORDER BY registration_date DESC
        LIMIT 30) a
 WHERE a.ip = '".$ip."'
于 2013-04-08T14:39:22.527 回答
0

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

于 2013-04-08T14:40:25.610 回答
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);
于 2013-04-08T14:43:34.827 回答