我花了最后5个多小时来浏览与主题相关的stackoverflow问题,并尝试调试代码,但是没有一个问题能够解决我的问题。我觉得这很简单,我很陌生,因为我还是SQL新手。
我只是想用我的代码来执行此更新语句,但它没有更新所述行:
$sql1 = "UPDATE usern SET loggedin=? WHERE username=?";
我根本不知道我在这里缺少什么。有人可以帮我吗?这真让我发疯。我的完整代码:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
if (isset($_POST['login'])) {
$conn->autocommit(FALSE);
$useremail = $_POST['useremail'];
$password = $_POST['password'];
$loggedin = 1;
if (empty($useremail) || empty($password)) {
header("Location: index.php?error=emptyfields");
exit();
}
else {
$sql1 = "SELECT * FROM usern WHERE username=? OR email=?;";
$stmt1 = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt1, $sql1)) {
printf($mysqli->error);
}
else {
mysqli_stmt_bind_param($stmt1, "ss", $useremail, $useremail);
mysqli_stmt_execute($stmt1) or die(mysqli_stmt_error($stmt1));
$result1 = mysqli_stmt_get_result($stmt1) or die(mysqli_stmt_error($stmt1));
if (!mysqli_stmt_get_result($stmt1)) {
printf($mysqli->error);
}
if ($row = mysqli_fetch_assoc($result1)) {
$pwdCheck = password_verify($password, $row['pass']);
if ($pwdCheck == false) {
header("Location: signin.php?error=wrongpwd1");
exit();
}
else if ($pwdCheck == true) {
session_start();
$_SESSION['userid'] = $row['userid'];
$sql2 = "UPDATE usern SET loggedin=? WHERE username=?";
$stmt2 = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt2, $sql2)) {
header("Location: index.php?error=sqlerror2");
exit();
}
mysqli_stmt_bind_param($stmt2, "is", $loggedin, $useremail);
mysqli_stmt_execute($stmt2);
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();
}
$conn->close();
我忘了补充,这是我不断收到的完整错误消息:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given on line 24.