获取mysqli存储结果作为字符串

时间:2018-08-30 09:00:20

标签: php html css

我正在尝试为从邮局收到的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");
      }
  }

1 个答案:

答案 0 :(得分:0)

我认为您在两个功能mysqli_stmt_store_resultmysqli_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.

  }

有关更多认证,请参阅文档链接中的示例二。