那麼,首先你需要將輸入搜索查詢分隔成單獨的關鍵字。在PHP中,你可以做到這一點,如下所示:
$keywords = explode(' ', $searchQuery);
然後,使用AND
關鍵字查詢檢索所需的行。
$query = "SELECT * FROM market WHERE fruit LIKE '%$keywords[0]%' AND country LIKE '%$keywords[1]%'";
由於有時關鍵詞的順序可能會相反,你可以使用一個OR
操作了。
$query = "SELECT * FROM market WHERE (fruit LIKE '%$keywords[0]%' AND country LIKE '%$keywords[1]%') OR (fruit LIKE '%$keywords[1]%' AND country LIKE '%$keywords[0]%')";
如果您認爲用戶可能會使用其他不同的分隔符比space
你可以使用正則表達式來確定是不是字母數字字符的任何存在。然後,使用該字符作爲分隔符並標識各個關鍵字。
Determine if a character is alphabetic
[編輯]:
另一個簡單的事情是,使用MySQL的OR
語句,並檢查是否有任何一個條件匹配。不需要爆炸查詢。
$query = "SELECT * FROM market WHERE (fruit LIKE '%$query%' AND country LIKE '%$query%') OR (fruit LIKE '%$query%') OR (country LIKE '%$query%') ";
該查詢將首先檢查兩個關鍵字是否存在,然後檢查各個關鍵字是否存在並相應返回。
如果用戶輸入「I love usa new york banana」 – user2178521
如果我們將每個作品分解成數組,那麼查詢將返回I,愛,美國,新的,紐約,香蕉,這將搜索包括我,愛的所有內容。 – user2178521
請看看編輯過的帖子。 – Kevin