1

私は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つの行があり、それぞれにid、login_name、login_password、login_levelが含まれています。

ステートメントが実行されると、以下のみが出力されます。

11

どんな助けでも大歓迎です。

4

3 に答える 3

6

fetch()メソッドは、データの取得に成功したかどうかに応じてTRUE、 、FALSE、またはを返します。NULL配列内のデータを返しません。代わりに、bind_result()メソッドによってバインドされた変数に結果を配置します。

于 2009-03-16T00:03:54.167 に答える
1

PHP では 1 が TRUE であるため、1 が返されます。

あなたがすべきことは、変数を[bind_result][1]メソッドにバインドしてから実行することです:

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

良い例は、バインド結果のドキュメント ページにあります。

于 2009-03-16T00:07:05.237 に答える
1

この方法で取得できるようにするには、最初に結果変数を次のようにバインドする必要があります。

$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);
}
于 2009-03-16T00:11:22.387 に答える