mysqli_num_rows показывает 1 найденную строку, но mysqli_fetch_assoc возвращает пустые поля, когда эхо - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть следующий фрагмент кода. Когда я проверяю, сколько строк содержит массив результатов, он выводит 1. Но когда я пытаюсь получить доступ к данным внутри (имя, фамилия, имя пользователя и т. Д.), Он ничего не выводит.

$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);

$password = md5($password);
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);

if (mysqli_num_rows($results) == 1) {
    $session_user = mysqli_fetch_assoc($result);

    $_SESSION['firstname'] = $session_user['firstname'];
    $_SESSION['lastname'] = $session_user['lastname'];
    echo $_SESSION['firstname']; // doesn't print anything

    $_SESSION['username'] = $username;
    $_SESSION['success'] = true;

    header('location: index.php');
}

Однако база данных MYSQL показывает, что данные есть, и имя столбца действительно правильное, в следующем порядке: идентификатор, имя пользователя, имя, фамилия, адрес электронной почты, пароль.

Я потерян, что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Вы вызываете неправильную переменную $result вместо $results в вашей функции mysqli_fetch_assoc.

0 голосов
/ 06 апреля 2019

может быть это будет работать.

if (mysqli_num_rows($results) > 0) {
    $session_user = mysqli_fetch_assoc($result);

    $_SESSION['firstname'] = $session_user['firstname'];
    $_SESSION['lastname'] = $session_user['lastname'];
    echo $_SESSION['firstname']; // doesn't print anything

    $_SESSION['username'] = $username;
    $_SESSION['success'] = true;

    header('location: index.php');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...