我需要一些关于这个脚本的帮助, 如果在上次登录功能后的几天内将日期设置为24小时,那么接缝将成为一个问题,如果它已经少于1小时,它仍会记录它们,它们应该只能在每24小时内访问一次。
我忽略了秒钟和分钟,我知道我不应该这样做,但我不确定如何实施它。
function currentMysqlTime($dbh) {
$sql = $dbh->prepare("SELECT CURRENT_TIMESTAMP()");
$sql->execute();
$x = $sql->fetchAll();
return $x[0][0];
}
function lastLoginTime($dbh, $id) {
$sql = $dbh->prepare("SELECT * FROM userpoints WHERE uid = ? AND pid = 2 ORDER BY timestamp desc LIMIT 1");
$sql->execute(array($id));
$y = $sql->fetchAll();
return $y[0][3];
}
function mysqlTimeDiff($dbh, $x, $y) {
$sql = $dbh->prepare("SELECT TIMEDIFF(?, ?)");
$sql->execute(array($x, $y));
$z = $sql->fetchAll();
return $z[0][0];
}
function mysqlDateDiff($dbh, $x, $y) {
$sql = $dbh->prepare("SELECT DATEDIFF(?, ?)");
$sql->execute();
$z = $sql->fetchAll();
return $z[0][0];
}
这是我试图解决的功能。
function daysSinceLastLogin($x) {
$parts = explode(':',$x);
if($parts[0] / 24 == 0) {
//THEN IT IS IS LESS THEN A DAY
}
}
return $parts[0] / 24;
}
答案 0 :(得分:0)
您的dateDiff
函数没有将$ x / $ y参数传递到您准备好的语句中,这无疑会导致错误:
$sql->execute()
应该是
$sql->execute(array($x, $y)); /// <--missing the array() part
答案 1 :(得分:0)
尝试进行全日期比较。假设$ x是完整日期(2011-09-16 12:30:00)
if ($x >= Date("Y-m-d H:i:s", strtotime("-1 day"))) {
// less than a day
}