我正在使用LIKE mysqli
查詢爲我的項目創建搜索功能。涵蓋所有級聯組合的簡單方法
在我嘗試將功能設置爲'用戶友好'時,我可能會發現自己包括很多CONCAT請求。
I.e.
$contact = $mysqli->query("SELECT * FROM contact WHERE k_name LIKE '%$searching%' OR f_name LIKE '%$searching%' OR l_name LIKE '%$searching%' OR concat(f_name,l_name) LIKE '%$searching%' OR concat(k_name, l_name) LIKE '%$searching%' OR mobile LIKE '%$searching%' OR phone LIKE '%$searching%' OR w_phone LIKE '%$searching%' OR w_fax LIKE '%$searching%' OR k_email LIKE '%$searching%' OR email LIKE '%$searching%' OR w_email LIKE '%$searching%' order by id LIMIT 5");
這裏的想法是允許用戶以任何順序鍵入他們的搜索,以準確找到他們正在尋找的東西。
例如,用戶'A'可能不記得街道的名稱,因此他們搜索街道號碼和郊區。或者他們可能會記住一個聯繫人的名字和郊區,但不是姓氏。
所以我的問題是,是否有一個簡單的條目,將涵蓋單個WHERE選擇的所有可能的連接組合?
例
$contact = $mysqli->query("SELECT * FROM contact WHERE concat(all) LIKE '%$searching%' OR f_name LIKE '%$searching%' OR l_name LIKE '%$searching%'OR mobile LIKE '%$searching%' OR phone LIKE '%$searching%' OR w_phone LIKE '%$searching%' OR w_fax LIKE '%$searching%' OR k_email LIKE '%$searching%' OR email LIKE '%$searching%' OR w_email LIKE '%$searching%'
在這種情況下,如果我輸入f_name然後l_name然後電話它的作品。但是,如果我輸入f_name然後輸入k_name或其他任何不按順序它不起作用。我正在尋找能夠涵蓋所有組合的解決方案。 – Bjaeg
*** @ Bjaeg ***:不。如果你想使用*單個*搜索字符串來比較所有字段,那麼它必須具有*任意一個*'f_name'或'l_name'或'phone'或'etc_fld'值。如果您同時輸入('phone'和'f_name')或('email'和'l_name')類型的隨機組合作爲您的單個搜索字符串的一部分,則不起作用。如果你想要這樣的行爲,那麼你必須將搜索字符串拆分爲多個,並在查詢中使用* them *,並使用多個或更多個'like'組合。否則,'Rahautos'解決方案應該工作。 –
@RavinderReddy感謝您進一步詳細解釋。 – Bjaeg