我的数据库表usern
包括两列-loggedin
和datevisited
。我的PHP代码应该实现的是:
当用户“登录”时,loggedin
列应更新为整数值1
,而datevisited
列应更新为当前日期。我当前的代码应该可以在以下代码行做到这一点:
$ sql =“ UPDATE usern SET已登录= 1 AND datevisited ='$ date'WHERE用户名='$ useremail'或email ='$ useremail'”;
但是此代码不会将这些值更新到数据库中。也许是因为此代码放置在什么地方而不起作用?
这是完整的代码:
if (isset($_POST['login'])) {
$useremail = $_POST['useremail'];
$password = $_POST['password'];
$loggedin = 1;
if (empty($useremail) || empty($password)) {
header("Location: index.php?error=emptyfields");
exit();
}
else {
$date = date("Y-m-d H:i:s");
$sql = "SELECT * FROM usern WHERE username=? OR email=?;";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: index.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ss", $useremail, $useremail);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if ($row = mysqli_fetch_assoc($result)) {
$pwdCheck = password_verify($password, $row['pass']);
if ($pwdCheck == false) {
header("Location: signin.php?error=wrongpwd");
exit();
}
else if ($pwdCheck == true) {
session_start();
$_SESSION['userid'] = $row['userid'];
$sid = $_SESSION['userid'];
$_SESSION['username'] = $row['username'];
$_SESSION['email'] = $row['email'];
$_SESSION['defpic'] = $row['defpic'];
$_SESSION['loggedin'] = $row['loggedin'];
$date = date("Y-m-d H:i:s");
$sql = "UPDATE usern SET loggedin=1 AND datevisited='$date' WHERE username='$useremail' or email='$useremail'";
if ($conn->query($sql) === TRUE) {
header("Location: index.php?login=success");
exit();
}
}
else {
header("Location: signin.php?error=wrongpwd");
exit();
}
}
else {
header("Location: signin.php?error=nouser");
exit();
}
}
}
}
else {
header("Location: signin.php");
exit();
}
更新语句位于该代码中的最后else if
条语句上。