无法记录当前时间戳以便注销

时间:2016-07-21 00:34:22

标签: php mysql datetime

所以我正在使用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"]."'";

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

2 个答案:

答案 0 :(得分:0)

第一次:在您的查询中将date()替换为NOW()(如果您不关心特定时间,则CURDATE() <) / p>

第二次:通过将查询行更改为

来确认查询已成功运行
if(!$con->query($QueryLO)){/*handle error here*/}
else{/*success: confinue to logout*/}

答案 1 :(得分:0)

  1. 检查数据库字段的定义方式如下: A_LastOnline =日期或日期时间或时间戳
  2.   

    如果日期则格式为yyy-mm-dd。例如:$ date = date('Y-m-d');
      如果是datetime或timestamp,则格式为yyy-mm-dd。例如:$ date = 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);    
      ?>