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

时间:2014-08-07 18:31:47

标签: php mysqli prepared-statement

我是使用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();

1 个答案:

答案 0 :(得分:0)

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

这意味着您无法使用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'];