0

非常に単純な統計スクリプトを作成しようとしています。

私はテーブルを持っていますdata ( ip, date, page )。過去 15 分間に同じ IP とページがない場合にのみ、このテーブルに IP と現在のページを挿入したいと考えています。

これが私が試した最後のSQLです:

INSERT INTO data ( `ip` , `date` , `page` )
SELECT ( :ip , NULL , :page )
WHERE NOT EXISTS (
    SELECT * FROM data
    WHERE `ip` = :ip AND `page` = :page AND date BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 15 MINUTE)) AND timestamp(NOW())
)

「存在しない」内の SELECT は、単独で使用すると機能します。どんな助けでも大歓迎です!

4

2 に答える 2

-1

「存在しない場所」は無効です

2 つの SQL クエリを実行する必要があります。

$sql = 'SELECT * FROM data
    WHERE `ip` = :ip AND `page` = :page AND date BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 15 MINUTE)) AND timestamp(NOW())';
$sth = $pdo->prepare($sql);
$sth->execute(array(':ip' => 'that ip', ':page' => 'that page'));
if ($sth->rowCount() === 0)
{
   $sql = 'INSERT INTO data ( `ip` , `date` , `page` )
VALUES (:ip , NULL , :page)';
   // etc.
 }
于 2013-10-24T10:19:53.837 に答える