我想知道注册用户的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.
答案 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);