[英]PHP MySQL: Search query work only with existing full term
我得到了一個完全有效的搜索查詢,但只有當我使用正確的術語(即'iPhone 6 Plus'但如果我只搜索'iPhone'時它將不會返回任何內容。
我的搜索查詢是: SELECT * FROM products WHERE name LIKE '" . $term . "' OR brand LIKE '" . $term . "' LIMIT 0 , 30"
那么我如何創建一個更好的查詢,可以更好地搜索?
非常感謝所有能提供幫助的人。
要在部分搜索字詞上進行匹配,您必須在查詢中添加一些通配符 , %
:
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.
如果您需要更復雜的東西,您將需要查看全文搜索 。
拉丁語排序規則( LATIN1_GENERAL_CS
)是已知適用於不區分大小寫搜索的其中之一。 如果我指定的那個(我嘗試總是使用UTF-8)不起作用,則替換拉丁語排序規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.