簡體   English   中英

PHP MySQL:搜索查詢僅適用於現有的完整術語

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM