php - 如何在 MySQL 和 PHP 中执行反向查找类型处理?

标签 php mysql

首先,如果很难理解我的意思,我想表示歉意,我会尽力解释。

好的,这是我必须搜索数据库的代码

require_once 'connect.php';
        if(isset($_GET['lookfor'])) {
            $keywords = $db->escape_string($_GET['lookfor']);
            $keywords = preg_replace("#[^0-9 a-z]-#i","",$keywords);
            $query = $db->query("
                SELECT *
                FROM lookup
                WHERE keywords LIKE '%{$keywords}%'
                OR title LIKE '%{$keywords}%'
            ");

但显然这只会返回与我搜索的内容匹配的内容。我想要实现的是,当我搜索 'title' 的内容时,我希望它做的是查看与该标题关联的关键字,并从数据库返回具有相同内容的所有其他项目关键字,无论标题如何,如果有意义的话。

我不知道如何做到这一点,因为我是新手。任何帮助将不胜感激:)

最佳答案

您需要使用 subqueryjoin 。要从标题中获取关键字,您需要如下查询:

SELECT keywords FROM lookup WHERE title LIKE ?

现在您可以使用该输出来查找新标题,在本示例中我将使用子查询。

SELECT titles FROM lookup WHERE keywords = 
  (SELECT keywords FROM lookup WHERE title LIKE ?)

当然,这也会返回原始标题,并且只会查找与关键字完全相同的标题。

正如 Marc B 指出的那样,您很容易受到 sql 注入(inject)的攻击。您应该首先使用 preg_replace 并随后转义。但更好的是使用准备好的语句,例如 PDO library .

关于php - 如何在 MySQL 和 PHP 中执行反向查找类型处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846967/

相关文章:

带有面向对象 PHP 的 PHP 购物车

c# - 当有复合主键并且只想使用一个时使用 db.Find

javascript - XMLHttpRequest() 在函数中返回响应

php - mod 重写,title slugs 和 htaccess

php - 从一张表中抓取Mysql数据并为具有特定ID的特定用户显示它

mysql - SQL 内部查询语法

MYSQL 错误号 121。支持事务、行级锁定和外键

php - laravel Controller 与数据库不匹配

php - mysql 功能,例如 'show processlist' 以及客户端代码信息

php - 为什么这个 PHP preg_replace() 不起作用?