0

登録ユーザーの 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 件に制限したくありません。

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

これを試して。

$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 に答える