Php MYSQL-在多个列中搜索单词

Php MYSQL-在多个列中搜索单词,php,mysql,search,Php,Mysql,Search,我想为我的网站做一个搜索工具 如果我搜索一个短语,我希望它搜索多个列 例如,如果我搜索dewalt drill,标题是works dewalt power drill,我希望它出现 另外,如果我搜索dewalt drill,瓷砖上有dewalt,描述中有drill,我希望它出现 但搜索的所有单词必须包含在任何字段组合中 有人能帮我解答这个问题吗 目前: {Select * from products where sku like '%{$searchwords}%' or title like

我想为我的网站做一个搜索工具

如果我搜索一个短语,我希望它搜索多个列

例如,如果我搜索dewalt drill,标题是works dewalt power drill,我希望它出现

另外,如果我搜索dewalt drill,瓷砖上有dewalt,描述中有drill,我希望它出现

但搜索的所有单词必须包含在任何字段组合中

有人能帮我解答这个问题吗

目前:

{Select * from products where sku like '%{$searchwords}%' or title like '%{$searchwords}%' or desc like '%{$searchwords}%}

您可能需要搜索(从MySQL 5.6开始,这也适用于InnoDB表)。您可以要求所有单词都带有。

如果您的表是myisam,则可以创建索引,然后在布尔模式下使用

要添加密钥,请执行以下操作:

alter table products添加全文(sku、标题、描述)

那么您的查询将是:

 $searchwords = join(' +', explode(' ', $searchwords));

 $query = "SELECT * FROM products WHERE MATCH (sku, title, desc) AGAINST ('{$searchwords}' IN BOOLEAN MODE)";

您需要使用
addcslashes
%
字符进行转义,否则这些字符将被视为通配符。显然,您需要确保正确转义搜索词