我正在使用 LIKE mysqli
查询为我的项目创建一个搜索功能。
在我尝试使功能尽可能“用户友好”的过程中,我发现自己包含了很多 CONCAT 请求。
即
$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%'
最佳答案
使用 Concat_ws
:-
WHERE concat_ws(' ',k_name,f_name,l_name,phone...) LIKE '%$searching%'
关于php - 一种覆盖所有串联组合的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800868/