php - 为什么此查询不返回对象?

标签 php mysql database

我正在从“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 查询中可能存在错误,并且 $resultfalse 而不是结果对象。

我认为这可能是因为您在查询中缺少一些空格。这一行:

$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/

相关文章:

python - 多对多关系情况下如何选择记录与ponyorm

php - 如何修复PHP中的“ header 已发送”错误

php - Elasticsearch 如何使用通配符进行 OR 查询

c++ - 数据库连接对象的名称游标的历史记录是什么?

php - MySQL返回错误记录

php - php中具有相同名称的两列的JSON_ENCODE

sql - 多表一对一关系

php - 通过模型上的特定方法订购 CGridView

php - 'undo'这个小函数在PHP中如何实现?

mysql - 从 bash 将 blob 字段保存到磁盘