无法记录注销的当前时间戳



所以我正在使用PHP和mySQL构建一个简单的帐户系统。出于某种原因,当用户注销时,我无法获得要记录到数据库中的当前时间戳。

这是我的注销脚本:

 <?php require 'connections.php'; ?>
    <?php
        session_start();
        //Setting Last Online Time
        $QueryLO = "UPDATE account SET A_LastOnline = date() WHERE AID='".$row['AID']."'";
        $con->query($QueryLO);
        unset($_SESSION["AID"]);
        unset($_SESSION["A_UserLevel"]);
        unset($_SESSION["A_Username"]);
        unset($_SESSION["A_Screenname"]);
        unset($_SESSION["A_FirstLogin"]);
        session_destroy();
        header('Location: index.php');
        exit();
    ?>

A_LastOnline的格式为DateTime。

非常感谢您的帮助!

编辑:这是我登录页面php部分的查询。

    <?php require 'connections.php'; ?>
    <?php
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        $UN = $_POST['Username'];
        $PW = $_POST['Password'];
        $result = $con->query("select * from account where A_Username='$UN' AND A_Password='$PW'");
        $row  = $result->fetch_array(MYSQLI_BOTH);
        session_start();
        $_SESSION["AID"] = $row['AID'];
        $_SESSION["A_UserLevel"] = $row['A_UserLevel'];
        $_SESSION["A_Username"] = $row['A_Username'];
        $_SESSION["A_Screenname"] = $row['A_Screenname'];
        $_SESSION["A_FirstLogin"] = $row['A_FirstLogin'];
        $_SESSION["A_RegisteredIP"] = $row['A_RegisteredIP'];
        $_SESSION["A_LatestIP"] = $row['A_LatestIP'];
        $_SESSION["A_LastOnline"] = $row['A_LastOnline'];
        echo $QueryLO = "UPDATE account SET A_LastOnline = NOW() WHERE AID='".$row['AID']."'";
        $con->query($QueryLO);
    }
?>

编辑:所以我的最终解决方案是:

$QueryLO = "UPDATE account SET A_LastOnline = date() WHERE AID='".$row['AID']."'";

必须更改为:

echo $QueryLO = "UPDATE account SET A_LastOnline = NOW() WHERE AID='".$_SESSION["AID"]."'";

考虑到会话变量,因为我的$行没有在这个特定的页面上设置。

1st:将查询中的date()替换为NOW()(如果您不关心一天中的特定时间,则替换CURDATE()

第二步:通过将查询行更改为来确认查询已成功运行

if(!$con->query($QueryLO)){/*handle error here*/}
else{/*success: confinue to logout*/}
  1. 检查数据库字段的定义方式:A_LastOnline=日期或日期时间或时间戳

如果是date,则格式为yyy-mm-dd。例如:$date=日期('Y-m-d')
如果是日期时间或时间戳,则格式为yyy-mm-dd。例如:$date=日期('Y-m-d H:i:s');

  1. 然后将代码中的查询更改为以下内容:

    //Setting Last Online Time
    $date = date('Y-m-d H:i:s');//or $date = date('Y-m-d');
    $QueryLO = "UPDATE account SET A_LastOnline = $date WHERE AID='".$row['AID']."'";
    $con->query($QueryLO);    
    ?>
    

相关内容

  • 没有找到相关文章

最新更新