php,在prepare中使用SELECT语句,如何获取fetch_assoc数组?

时间:2015-07-22 12:44:22

标签: php mysql mysqli

我一直在使用php中的PREPARE和bind_param。我试图让它为SELECT语句工作并显示结果。当我在这里尝试语句时,我得到0搜索结果。如果我使用查询,它工作正常,结果显示。使用prepare是不可能做到的?或者使用$result = $stmt->execute();获取结果我的逻辑错误了吗?

<?php


$dbhost = 'localhost'; //default
$dbuser = 'root';
$dbpass = 'somepassword';
//Create a connection object
$conn = new mysqli($dbhost, $dbuser, $dbpass);
if($conn->connect_error )
{
  die('Could not connect: %s' . $conn->connect_error);
}
echo "Connected successfully<br>";
//Select the database call the method from out conn object
$conn->select_db("TUTORIAL");

$stmt=$conn->prepare("SELECT tutorial_author FROM tutorial_info WHERE tutorial_title=?;");
$stmt->bind_param("s",$tutorial_title);

$tutorial_title="Math";
$result = $stmt->execute();

//We get a false if it fails
if($result===FALSE) {

  echo "Select failed <br>";

}

else {

  if ($result->num_rows > 0) {

      while($row = $result->fetch_assoc()) {
          echo "Tutorial Title: " . $row["tutorial_title"]. " - Name: " . $row["tutorial_author"]. "<br>";
      }
  } else {
      echo "0 results";
  }



}






//Close the database
$conn->close();




 ?>

1 个答案:

答案 0 :(得分:1)

$stmt->execute()返回一个表示成功的布尔值。在您的代码中,您尝试阅读$result->num_rows和$ result的其他属性,而$ result应该是true(不是对象)。

使用$stmt->fetch()在绑定结果参数中逐个获取记录,或使用$stmt->get_result()获取具有更多功能的MySQLi_Result object,以便一次性获取数据或一行一次。