MySQLi подготовленный оператор не выполняется и не будет выполнен - PullRequest
0 голосов
/ 26 октября 2018

У меня проблема с моим оператором 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 ошибки после вашей подготовки, он скажет вам, почему это не удалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...