2013-10-27 50 views
1

我想爲我的網站製作一個搜索工具。MYSQL - 在多個coumns中搜索詞

,如果我搜索一個詞,我想它來搜索多列

例如,如果我搜索得偉鑽標題有作品德瓦爾特電鑽我希望它拿出。

此外,如果我搜索脫鹽鑽和瓦已脫硫和說明有鑽我想它出來。

但是搜索的所有單詞必須包含在任何字段組合中。

有人可以幫我查詢嗎?

目前:

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

您需要使用'addcslashes'轉義'%'和'_'字符,否則這些字符將被視爲通配符。 –

回答

1

如果您的表是MyISAM的,你可以創建一個fulltext指數則在布爾模式下使用

添加鍵值:

alter table products ADD FULLTEXT (sku, title, desc)

那麼你的查詢是:

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

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

顯然你需要確保你正確地逃避searchwords – ejrowley

1

你可能想FULLTEXT搜索(開始使用MySQL 5.6,這也適用於InnoDB表)。您可以要求使用BOOLEAN MODE的所有單詞。