Mysqli fetch () не получает данные - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь получить некоторые данные из заявления. Ниже приведен код, и он работает до bind_result(). Я проверил каждый второй шаг, единственное, что не работает, это fetch(). Я пытался исправить это в течение нескольких часов, прежде чем размещать здесь. Я надеюсь, что кто-то поможет. Заранее спасибо.

<?php

if (isset($_POST['login'])) {

    // Get form inputs to variables
    $username = strip_tags(trim($_POST['admin-email']));
    $password = strip_tags(trim($_POST['admin-password']));

}

// If username and password is set
if (isset($username, $password)) {

    // New db connection
    $mysqli = new mysqli($servername, $dbusername, $dbuserpasswd, $dbname);

    // Check db connection is set
    if ($mysqli->connect_error) {
        die("Database connection failed: " . $mysqli->connect_error);
    }

    // Prepare select query
    $query = "SELECT admin_email, hashed_password FROM admins WHERE admin_email =?";

    // Init statement
    $stmt = $mysqli->stmt_init();

    // Prepare statement
    if (!$stmt->prepare($query)) {
        print "Failed to prepare the statement";
    }
    else {
        // Bind parameters to statement
        $stmt->bind_param('s', $username);

        // Execute statement
        if (!$stmt->execute()) {
            print "Failed to execute statement";
        }
        else {
            // Get results to a variable
            $results = $stmt->get_result();

            // Check if user exists
            if ($results->num_rows > 0) {

                // Bind variables to prepared statement
                $stmt->bind_result($username, $hashed_password);

                // Fetch from statement
                if (!$stmt->fetch()) {
                    print "Failed to fetch from statement";
                }
                else {
                    // Verifiy input password with hashed password on database
                    if (password_verify($password, $hashed_password)) {
                        echo "It's wrong!";
                    }
                    else {
                        echo "It's correct!";
                    }
                }
            }
        }
    }
}

?>

1 Ответ

0 голосов
/ 21 марта 2020

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

Так что вместо

$results = $stmt->get_result();

Использовать ниже

$stmt->store_result();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...