我正在尝试使用mysql PDO语句来选择最后一天发生的所有失败登录。我的表有4列... id(只是自动增量以生成不同的条目),ip(字符15),失败(布尔值),firstattempt(时间戳)。当我添加firstattempt> =(CURDATE() - INTERVAL 3 DAY)时,它开始返回false。如果没有WHERE子句中的那个,它确实返回行数。有什么想法吗?
function logip()
{
global $db;
global $user;
$ip = $_SERVER['REMOTE_ADDR'];
var_dump($ip);
$sql=$db->prepare('SELECT COUNT(failed) FROM logins WHERE firstattempt>=(CURDATE() - INTERVAL 3 DAY), ip=:ip');
$sql->execute(array(':ip'=>$ip));
$num=$sql->fetchColumn();
//$row=$sql->fetch();
var_dump($num);
$sql=$db->prepare('INSERT INTO logins (ip, failed, firstattempt) VALUES (:ip, :failed, :firstattempt)');
if ($user->authenticated())
$sql->execute(array(':ip'=>$ip, ':failed'=>false, ':firstattempt'=>time()));
else
$sql->execute(array(':ip'=>$ip, ':failed'=>true, ':firstattempt'=>time()));
}
答案 0 :(得分:0)
使用DATE_SUB函数。
SELECT COUNT(failed)
FROM logins
WHERE firstattempt>=DATE_SUB(Curdate(), INTERVAL 3 DAY)
AND ip = :ip
你的sql中有一些错误,
,
分隔。我认为它应该是AND