Php MYSQL-在多个列中搜索单词
我想为我的网站做一个搜索工具 如果我搜索一个短语,我希望它搜索多个列 例如,如果我搜索dewalt drill,标题是works dewalt power drill,我希望它出现 另外,如果我搜索dewalt drill,瓷砖上有dewalt,描述中有drill,我希望它出现 但搜索的所有单词必须包含在任何字段组合中 有人能帮我解答这个问题吗 目前: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
{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
对%
和
字符进行转义,否则这些字符将被视为通配符。显然,您需要确保正确转义搜索词