需要帮助从准备好的语句中获取数组


Need help fetching an array from a prepared statment

我是使用PHP准备语句的新手。我试图获得"full_name"的值…到目前为止,我被困在这里了。有人能帮我弄明白吗?谢谢!

if($db->connect_error){
    echo "Connection Error";
}
$id = 834;
$stmnt = $db->prepare("SELECT * FROM checkout_page where id = ?");
$stmnt->bind_param("i", $id);

if (!$stmnt->execute()) {
    echo "Execute failed: (" . $stmnt->errno . ") " . $stmnt->error;
}

$row = $stmnt->fetch();

您需要使用bind_result将变量绑定到所需的列。然后每次调用fetch()时,这些变量将使用下一行的值进行更新。fetch() with mysqli does not返回你的行/结果

这意味着您不能使用SELECT *。您需要指定需要哪些字段。

if($db->connect_error){
    echo "Connection Error";
}
$id = 834;
$stmnt = $db->prepare("SELECT full_name FROM checkout_page where id = ?");
$stmnt->bind_param("i", $id);

if (!$stmnt->execute()) {
    echo "Execute failed: (" . $stmnt->errno . ") " . $stmnt->error;
}
$stmnt->bind_result($full_name);
$stmnt->fetch();
echo $full_name;

或者,如果你安装了mysqlnd驱动程序,你可以使用get_result()来获得一个结果集,就像你运行一个普通的查询一样,而不是一个准备好的语句。

if($db->connect_error){
    echo "Connection Error";
}
$id = 834;
$stmnt = $db->prepare("SELECT * FROM checkout_page where id = ?");
$stmnt->bind_param("i", $id);

if (!$stmnt->execute()) {
    echo "Execute failed: (" . $stmnt->errno . ") " . $stmnt->error;
}
$result = $stmnt->get_result();
$row = $result->fetch_assoc();
echo $row['full_name'];