我一直在使用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();
?>
答案 0 :(得分:1)
$stmt->execute()
返回一个表示成功的布尔值。在您的代码中,您尝试阅读$result->num_rows
和$ result的其他属性,而$ result应该是true
(不是对象)。
使用$stmt->fetch()
在绑定结果参数中逐个获取记录,或使用$stmt->get_result()
获取具有更多功能的MySQLi_Result object,以便一次性获取数据或一行一次。