2015-09-24 100 views
0

我有一個數據庫表與幾列:如何搜索多個列的數據庫與一個搜索欄

Category    Model  Manufacturer 
Roland Pianos |  HP605 | Roland 
Kawai Pianos  |  CL36 | Kawai 
Roland Keyboards |  BK9 | Roland 

我希望能夠在同一時間可以同時搜索列,所以當我把搜索欄羅蘭HP605我想要結果展示羅蘭HP605。

目前我有以下幾點: 搜索框:

<input id="search" name="Search" type="text" placeholder="Search Products"> 

查詢碼:

if (isset($_GET['Search'])) { 
$query_RS_Search ="SELECT * FROM products WHERE Category LIKE :search OR products.Manufacturer LIKE :search OR products.Model LIKE :search"; 

$RS_Search = $conn->prepare($query_RS_Search) or die(errorInfo()); 
$RS_Search->BindValue(':search', '%'.$_GET['Search'].'%'); 
$RS_Search->execute(); 
$row_RS_Search = $RS_Search->fetch(); 

,如果你在搜索欄中把「羅蘭」羅蘭的所有工作正常產品出現了鋼琴和鍵盤,但是如果我搜索「Roland HP605」,它將無法找到它。

任何幫助,歡迎

+0

您可能需要在搜索欄值分成單獨的單詞使用更復雜的查詢將它們結合起來 - 這裏的一些想法:HTTP://計算器.com/questions/11106888 /使用或在-like-query-in-mysql-to-compare-multiple-fields – PaulF

回答

0

試試這個

SELECT * FROM products WHERE CONCAT(Category, products.Manufacturer,products.Model) LIKE :search 
+0

感謝您的回覆,但是這並不能解決問題。如果你要麼投入Roland(全部Roland出現),要麼HP605只有HP605出現。但是如果你像「Roland H605」那樣組合它,它不會找到任何東西。 – Ria

+0

我已經設法解決了我不得不爆炸字符串的問題,而不是像Rahautos和PaulF的回覆中提到的那樣。所以感謝您的幫助 – Ria