mysqli_fetch_assoc() не получает никаких данных / извлекает пустые данные

#php

#php

Вопрос:

Итак, я создаю панель администратора для своей веб-страницы, но я столкнулся с ошибкой. Когда я хочу извлечь данные из базы данных, используя uid в качестве ссылки, я не получаю никаких данных. Вот мой код:

  <?php

  session_start();

  $secretToken = "UWAL2019";

  include '../inc/db.inc.php'; # Including Database Info

  if (!isset($_POST['submit'])) {
    # If access has been sent straight trough using link, not submit button

    header("Location: index.php"); # Sending client back to Login page
    exit(); # (for security purpouses) Exiting this page
  }else {
    # If access has been sent using button

    $uid = $_POST['uid']; # Getting subbmitted Username, using POST method
    $pwd = $_POST['pwd']; # Getting subbmitted Password, using POST method

    if (empty($uid) || empty($pwd)) { # If some fields are empty

      header("Location: index.php?status=empty"); # Sending client back to Login page, with status EMPTY
      exit();

    }else { # If all fields are full
      # Login credentials checking, using Database

      $sql = "SELECT * FROM admins WHERE uid='$uid';";
      $result = mysqli_query($conn, $sql);
      $resultCheck = mysqli_num_rows($result);

      if ($resultCheck > 0) {

       header("Location: index.php?status=wrongCK");
       exit();
     }else {

       if ($data = mysqli_fetch_assoc($result)) {

         if ($data['pwd'] != $pwd) {

           header("Location: index.php?status=wrongRS");
           exit();
         }else {

           $_SESSION['secretToken'] = $data['secretToken'];

           if ($_SESSION['secretToken'] != $secretToken) {

             session_destroy();
             header("Location: index.php?status=wrong_token");
             exit();

           }else {

             $_SESSION['id'] = $data['id'];
             $_SESSION['uid'] = $data['uid'];
             $_SESSION['pwd'] = $data['pwd'];
             $_SESSION['maskName'] = $data['maskName'];
             $_SESSION['email'] = $data['email'];

             header("Location: adminPanel.php");
             exit();
           }
         }
       }else {
         header("Location: index.php?status=fetch_error");
         exit();
       }
     }
    }
  }

 ?>
  

К вашему сведению: переменные «?status» в заголовке — это код ошибки. Мой код останавливается на ?status=fetch_error, и я не могу пройти мимо этого. Кто-нибудь может мне помочь?

Комментарии:

1. Прекратите постоянное перенаправление и вместо этого сделайте немного разумных отладочных результатов — проверьте возвращаемые значения функции, запросите базу данных, какая ошибка могла произойти, и т.д.

2. Чувак, в этом коде полный бардак .. попробуйте использовать функции, это сделает ваш код более линейным, его будет легче понять и модифицировать. Также вам нужно избегать ваших входных данных, иначе вы можете удалить свою базу данных!!!

Ответ №1:

Я думаю, что ваша проблема в этой строке:

 if ($resultCheck > 0) {
    header("Location: index.php?status=wrongCK");
    exit();
}
  

Вы в основном говорите «Если пользователь был найден, перенаправьте». Я думаю, у вас должно быть:

 if ($resultCheck < 1) {
    header("Location: index.php?status=wrongCK");
    exit();
}
  

который перенаправит, когда пользователь НЕ найден.