php - mysql - 查明输入是否存在于最后 30 条记录中

标签 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 条。

最佳答案

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

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

关于php - mysql - 查明输入是否存在于最后 30 条记录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881964/

相关文章:

php - 如何通过触发器使用服务器发送的事件?

mysql - 这是什么意思 ?我从我的日志中找到了它

mysql - 将 MySQL group by date 和 select count 查询转换为 Laravel Eloquent

如果字段名是 0,PHP Mysql_fetch_array 失败

php - MySQL 内部连接 ​​2 个表

php - 在php案例中获取url查询参数

c# - 连接到网络上的 MySQL 数据库

php - 如何从同一个表中使用两个不同的 ORDER by 列进行两个 $db-> 查询,并且彼此独立地存在于一个 php 页面中?

php - 使用 if 语句更新表

php - PHP 函数 'mysql_fetch_Assoc' 的错误结果