Почему бы print_r ($ row); только вернуть номер 1? - PullRequest
1 голос
/ 16 марта 2009

Я пытаюсь выучить PHP5, и у меня возникла пара проблем с ним. Я работаю с подготовленными утверждениями и пытаюсь запустить следующий код:

<?php
require_once 'includes/config.php';

$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
die('There was a problem connecting to the database.');

$query = "SELECT * FROM user_table";

    if($stmt = $conn->prepare($query)) {
        $stmt->execute();

        while ($row = $stmt->fetch()) {
            print_r ($row);
        }

    }

?>

У меня есть 2 строки, каждая из которых должна содержать идентификатор, логин, логин и пароль логина.

Когда оператор выполняется, он печатает только следующее:

11

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

6 голосов
/ 16 марта 2009

Метод fetch () возвращает TRUE, FALSE или NULL в зависимости от того, удалось ли ему получить данные. Он не возвращает данные в массиве. Вместо этого он помещает результаты в переменные, связанные методом bind_result () .

1 голос
/ 16 марта 2009

Чтобы быть в состоянии получить это таким образом, вам сначала нужно связать переменные результата, как это:

$stmt->execute();

// bind the result variables in order 
$stmt->bind_result($id, $login_name, $login_password, $login_level);

// then get results
while ($stmt->fetch()) {
    var_dump($id, $login_name, $login_password, $login_level);
}
1 голос
/ 16 марта 2009

Возвращает 1, потому что 1 - ИСТИНА в PHP.

Что вам нужно сделать, это связать переменную с помощью метода [bind_result][1], а затем выполнить:

while ($stmt->fetch()) {
    printf ("%s\n", $variable);
}

Отличный пример на странице документации результатов связывания .

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