好吧,我正在尝试在基于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编写的字符串?
答案 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]%'