为什么这个准备语句在MYSQLI中不起作用?

Par*_*ser 0 php sql mysqli

我创建了这段代码:

$statement = $db->prepare("SELECT * FROM phptech_contact");
$statement->execute();
$result = $statement->result_metadata();
$object = $result->fetch_object();

print_r( $object );
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它不起作用.任何人都可以告诉我为什么它不起作用?

我在这个表中有20行,所以应该返回数据.

Phi*_*ber 5

来自http://ch.php.net/manual/en/mysqli-stmt.result-metadata.php

Note: The result set returned by mysqli_stmt_result_metadata() contains only metadata. It does not contain any row results. The rows are obtained by using the statement handle with mysqli_stmt_fetch().

只要您不需要此元数据,就不需要调用此方法.

$statement = $db->prepare("SELECT fld1, fld2 FROM phptech_contact");
$statement->execute();
$stmt->bind_result($fld1, $fld2);

while ($stmt->fetch()) {
    echo "$fld1 and $fld2<br />";
}
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢mysqli扩展.PDO更酷...... ;-)

$db = new PDO('...');
$stmt = $db->prepare("SELECT fld1, fld2 FROM phptech_contact");
$stmt->execute();

while ($obj = $stmt->fetchObject()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

要么

$objs = stmt->fetchAll(PDO::FETCH_OBJ);
Run Code Online (Sandbox Code Playgroud)