У меня проблема с моим оператором SQL, он выдает ошибку в первом операторе if, оператор SQL не выполнен. Для подготовленных утверждений я использовал mmtuts и w3schools, но я не знаю, что происходит не так.
Вот мой код:
function login($conn) {
if (isset($_POST['submitLogin'])) {
$username = $conn->escape_string($_POST['emailorusername']);
$password = $conn->escape_string($_POST['password']);
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ?error=sqlstatementfailed");
exit();
} else {
mysqli_stmt_prepare($stmt, $sql);
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
if (mysqli_num_rows($result) == 0) {
header("Location: ?username=notfound");
exit();
} else {
if (mysqli_num_rows($result) > 1) {
header("Location: ?error=toomuchresults");
exit();
} else {
header("Location: ?username=ok");
if ($password !== $row['password']) {
header("Location: ?password=false");
exit();
} else {
header("Location: ?password=ok");
$_SESSION['username'] = $row['username'];
$_SESSION['email'] = $row['email'];
$_SESSION['firstname'] = $row['firstname'];
$_SESSION['lastname'] = $row['lastname'];
header("Location: Index");
exit();
}
}
}
}
}
}
Сервер подключен к базе данных, так что это не проблема.
Может кто-нибудь помочь? Спасибо!
Решение:
Проверьте mysqli ошибки после вашей подготовки, он скажет вам, почему это не удалось.