所以我正在使用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"]."'";
考虑会话变量,因为我的$行没有在此特定页面上设置。
答案 0 :(得分:0)
第一次:在您的查询中将date()
替换为NOW()
(如果您不关心特定时间,则CURDATE()
<) / p>
第二次:通过将查询行更改为
来确认查询已成功运行if(!$con->query($QueryLO)){/*handle error here*/}
else{/*success: confinue to logout*/}
答案 1 :(得分:0)
如果日期则格式为yyy-mm-dd。例如:$ date = date('Y-m-d');
如果是datetime或timestamp,则格式为yyy-mm-dd。例如:$ date = date('Y-m -d H:i:s');
然后将代码中的查询更改为:
//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);
?>