我想基於複選框選擇使用或不使用多個類別進行mysqli全文搜索。MySQLi全文搜索多列類別
搜索基於同一列內的四個類別。
搜索類別是窗口,遊戲,平板電腦,手機。
當通過複選框選擇搜索選擇的類別/多個類別應該只對選定的類別進行。
表結構
id category title date ...
1 windows windows7 d1 ...
2 games windows games d2 ...
3 tablet windows tablet d3 ...
4 mobile windows mobile d4 ...
5 windows windows8 d5 ...
6 windows windows vista d6 ...
複選框搜索是
搜索在
<li><label><input name="all" type="checkbox" checked="checked" />All</label></li>
<li><label><input name="windows" type="checkbox" />Windows OS</label></li>
<li><label><input name="mobile" type="checkbox" />Windows Mobile</label></li>
<li><label><input name="games" type="checkbox" />Windows Games</label></li>
<li><label><input name="tablet" type="checkbox" />Windows Tablet</label></li>
例1:
Search for 'windows' should return result as
windows7
windows8
windows vista
When only checkbox windows is checked
例2:
Search for 'windows' should return result as
windows7
windows8
windows vista
windows games
When checkbox windows and games are checked.
我已經提出了一個查詢,但它根本不工作。
$query = "SELECT * FROM $table WHERE ";
$query .= "category='' ";
$query .= "OR category='windows' ";
$query .= "OR category='games' ";
$query .= "OR category='mobile' ";
$query .= "OR category='tablet' ";
$query .= " AND MATCH (title) AGAINST ('+$keyword*' IN BOOLEAN MODE) ORDER by id desc, title desc LIMIT 10";
我也試過這樣但不工作。
$query = "SELECT * FROM $table WHERE ";
$query .= "MATCH (category) AGAINST ('' IN BOOLEAN MODE) ";
$query .= "OR MATCH (category) AGAINST ('windows' IN BOOLEAN MODE) ";
$query .= "OR MATCH (category) AGAINST ('games' IN BOOLEAN MODE) ";
$query .= "OR MATCH (category) AGAINST ('mobile' IN BOOLEAN MODE) ";
$query .= "OR MATCH (category) AGAINST ('tablet' IN BOOLEAN MODE) ";
$query .= " AND MATCH (title) AGAINST ('+$keyword*' IN BOOLEAN MODE) ORDER by id desc, title desc LIMIT 10";
請看看爲什麼它不起作用,並建議如何搜索查詢可以爲選定的字段。
謝謝。
什麼在所有這些'匹配點領域反對'field1''?對我來說看起來很奇怪 –
@YourCommonSense表格和搜索中的一些列應該僅在標題中根據行進行,如果包含選定的字段。 –
你有錯誤信息嗎?請考慮發佈鏈接到小提琴或一些示例數據和您的表架構。缺乏這些信息的問題很難回答,並經常被低估。我假設field1,field2等是同一個表中的其他字段。如果是這樣,請取消引用它們,查詢應該工作,即field = field1 OR field = field2 OR .... –