我正在尝试为从邮局收到的bookName查找相应的bookId,以避免由于书名中的引号引起的错误。
我试图将参数作为$stmt
绑定到$bookName
并将结果存储为$stmt
,但是
echo $stmt;
给出此错误:
可恢复的致命错误:无法创建类mysqli_stmt的对象 转换为字符串
所以我不确定我在做什么...
$bookName = trim($_POST['bookName']);
$sql = "SELECT bookId FROM Book WHERE bookName = ?";
if($stmt = mysqli_prepare($conn, $sql)){
mysqli_stmt_bind_param($stmt, "s", $bookName);
if((mysqli_stmt_execute($stmt))){
mysqli_stmt_store_result($stmt);
}
else{
header("location: error.php");
}
}
我要将bookId保存为$ bookId
以下代码可以满足我的需求
if($stmt = mysqli_prepare($conn, $sql)){
mysqli_stmt_bind_param($stmt, "s", $bookName);
if((mysqli_stmt_execute($stmt))){
$result = mysqli_stmt_get_result($stmt);
while ($row = mysqli_fetch_array($result, MYSQLI_NUM))
{
foreach ($row as $r)
{
$bookId = $r;
}
}
}
else{
header("location: error.php");
}
}
答案 0 :(得分:0)
我认为您在两个功能mysqli_stmt_store_result
和mysqli_stmt_get_result
之间感到困惑,不得不在文档中看到此链接。
您必须使用mysqli_stmt_get_result
函数。
mysqli_stmt_get_result Documentation Link
if((mysqli_stmt_execute($stmt))){
mysqli_stmt_store_result($stmt);
}
将上面的代码替换为
if((mysqli_stmt_execute($stmt))){
// mysqli_stmt_store_result($stmt); not to use
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
echo $row; //as i dont have database details i hope this work.
}
有关更多认证,请参阅文档链接中的示例二。