主动用户跟踪,PHP会话

时间:2010-06-13 13:31:43

标签: sql mysql sql-like

好吧,我正在尝试在基于AJAX的应用程序中处理活动用户计数的函数。我想用正确的语法表达下面的SQL查询,但我不知道如何编写它。所需的SQL查询如下:

SELECT count(*)
FROM active WHERE timestamp > time() - 1800
     AND nick=(a string that doesn't contain [AFK])

现在,我明白time() - 1800可以分配给变量,但是timestamp > variable和nick如何不包含用SQL编写的字符串?

4 个答案:

答案 0 :(得分:2)

SELECT count(*)
FROM active WHERE timestamp > unix_timestamp() - 1800
     AND nick NOT LIKE '%[AFK]%'

答案 1 :(得分:0)

您的意思是time()来指代当前时间吗?我们可以假设timestamp属于datetime类型吗?然后这应该工作:

SELECT
    count(*)
FROM
    active
WHERE
    timestamp > NOW() - 1800

答案 2 :(得分:0)

关于用户名,您应该在将每个变量放入sql查询(SQL Injection)之前对其进行过滤。

$nick =  mysql_escape_string($nick);

然后在sql查询中:

$sql = "SELECT count(*) FROM `active` WHERE `timestamp` > (time() - 1800) AND `nick` = '{$nick}' AND `nick` NOT LIKE '%[AFK]%' LIMIT 1";

答案 3 :(得分:0)

SELECT COUNT(*) 从活跃 在哪里时间戳> DATE_ADD(NOW(),INTERVAL -1800 SECOND) 并且不喜欢'%[AFK]%'