时间日期功能

时间:2011-09-16 14:06:14

标签: php mysql

我需要一些关于这个脚本的帮助, 如果在上次登录功能后的几天内将日期设置为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;
}

2 个答案:

答案 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 
    }