我正在从“PHP 和 MySQL Web 开发”学习 PHP 和 MySQL。目前我发现显示数据库结果很困难。这是代码:
<body>
<?php
$searchtype = $_POST['searchtype'];
$seachterm = trim($_POST['searchterm']);
if(!$searchtype || !$seachterm){
echo "You did not enter all the details. Bye";
exit;
}
if(!get_magic_quotes_gpc()){
$searchtype = addslashes($searchtype);
$seachterm = addslashes($seachterm);
}
@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');
if(mysqli_connect_errno()){
echo "Sorry Could not connect to db";
exit;
}
$query = "select * from books where".$searchtype."like '%".$seachterm."%'";
$result = $db -> query($query);
$num_of_results = $result->num_rows; // Line 47
echo "Num of books found is ".$num_of_results." ";
for($i = 0; $i < $num_of_results; $i++){
$row = $result -> fetch_assoc();
echo "<p><strong>".($i+1).". Title: ";
echo htmlspecialchars(stripslashes($row['title']));
echo "</strong><br />Author: ";
echo stripslashes($row['author']);
echo "<br />ISBN: ";
echo stripslashes($row['isbn']);
echo "<br />Price: ";
echo stripslashes($row['price']);
echo "</p>";
}
$result->free();
$db -> close();
?>
</body>
当我运行上面的代码时,这是我得到的错误。
Notice: Trying to get property of non-object in /opt/lampp/htdocs/xampp/php/php_crash/phptomysql/connect.php on line 47
Num of books found is
Fatal error: Call to a member function free() on a non-object in /opt/lampp/htdocs/xampp/php/php_crash/phptomysql/connect.php on line 64
我做错了什么?
最佳答案
您的 SQL 查询中可能存在错误,并且 $result
为 false
而不是结果对象。
我认为这可能是因为您在查询中缺少一些空格。这一行:
$query = "select * from books where".$searchtype."like '%".$seachterm."%'";
应该是这样的:
$query = "SELECT * FROM books WHERE '" .$searchtype. "' LIKE '%".$seachterm."%'";
如果我们知道以下值将会有所帮助:
$_POST['searchtype'];
$_POST['searchterm'];
关于php - 为什么此查询不返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17874707/