PHP MySQL:搜索查询仅适用于现有的完整术语

时间:2016-02-15 19:04:48

标签: php mysql sql search

我的搜索查询完全有效但只有当我使用正确的术语时(例如'iPhone 6 Plus',但如果我只搜索'iPhone',它将不返回任何内容。

我的搜索查询是:SELECT * FROM products WHERE name LIKE '" . $term . "' OR brand LIKE '" . $term . "' LIMIT 0 , 30"

那么我如何才能创建一个更好的查询,以便更好地搜索?

非常感谢所有可以提供帮助的人。

1 个答案:

答案 0 :(得分:3)

要对部分搜索字词进行匹配,您必须为查询添加一些wildcards%

SELECT * FROM products WHERE name COLLATE UTF8_GENERAL_CI LIKE '%" . $term . "%' OR brand COLLATE UTF8_GENERAL_CI LIKE '%" . $term . "%' LIMIT 0 , 30"

您只需将COLLATE UTF8_GENERAL_CI添加到列定义中,然后就不必修改查询。例如:

ALTER TABLE products MODIFY COLUMN name VARCHAR(...) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI. 

如果您需要更复杂的内容,则需要查看fulltext searches

拉丁语排序规则(LATIN1_GENERAL_CS)是众所周知的不区分大小写搜索之一。如果我指定的那个(我试图总是使用UTF-8)不起作用,则用拉丁语校对代替。