为什么要print_r($ row);只返回1号?

时间:2009-03-15 23:55:43

标签: php mysql mysqli

我正在尝试学习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);
        }

    }

?>

我有两行应该返回每行包含一个id,login_name,login_password和一个login_level。

当语句运行时,它只打印以下内容:

11

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

fetch()方法返回TRUEFALSENULL,具体取决于它是否成功获取数据。它不会返回数组中的数据。相反,它将结果放在由bind_result()方法约束的变量中。

答案 1 :(得分:1)

它返回1,因为PHP中的1为TRUE。

您应该做的是使用[bind_result][1]方法绑定变量,然后执行:

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

bind result documentation page.

就是一个很好的例子

答案 2 :(得分: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);
}