MySQL检查3个或更多连续条目

时间:2015-03-07 04:57:42

标签: php mysql

我有实时聊天,如果用户连续聊了5次以上我需要禁止

这是sql:

function countMessages() {
        global $tsUser;
        $querys = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM c_chat_messages where msg_user = "'.$tsUser->uid.'" ORDER BY msg_id ASC');
        $counts = db_exec('num_rows', $querys);
        if($counts > 5) { $this->banUser(); }
}

$ tsUser-> uid是用户的ID

我需要检查用户是否连续聊了5次以上,以便php执行$ this-> banUser();功能

1 个答案:

答案 0 :(得分:0)

您必须获取用户在数据库表中发送的每条消息的timestamp。 而且你可以通过计算消息之间不同的时间来查询用户是否在过去15秒内发送了超过5条消息,从而查询查询。

获取该用户发送的最后五条消息,

SELECT * FROM c_chat_messages where msg_user = "'.$tsUser->uid.'" ORDER BY msg_id DESC limit 0,5

获得last and first record returned by above query之间的差异。

以秒为单位获得时差(

SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;

你可以每隔一两秒调用一次ajax文件来检查这个。

如果需要进一步澄清,请告诉我。