我使用LIKE mysqli
查询在我的网站中构建了一个搜索功能。
即
$contact = $mysqli->query("SELECT * FROM contact WHERE f_name LIKE '%$searching%' OR l_name LIKE '%$searching%'");
假设我有联系方式
如果我输入' bob'在我的输入字段中,如果我键入' chan'
,它将成功找到bob我希望能够做的是输入' bob chan'让它找到联系人。
我认为有一些方法可以追加' mysqli专栏?像...这样的东西。
$contact = $mysqli->query("SELECT * FROM contact WHERE f_name.' '.l_name LIKE '%$searching%'");
在这种情况下,正确的语法是什么?
答案 0 :(得分:1)
您可以使用CONCAT(str1,str2,...)
功能加入多个值。
SELECT * FROM contact WHERE concat( f_name, ' ', l_name ) LIKE '%$searching%'
文档参考:
CONCAT(str1,str2,...)
返回连接参数产生的字符串。可以 有一个或多个参数。如果所有参数都是非二进制字符串, 结果是一个非二进制字符串。如果参数包含任何二进制文件 字符串,结果是二进制字符串。数字参数是 转换为等效的非二进制字符串形式。
如果任何参数为NULL,则
CONCAT()
返回NULL。mysql> SELECT CONCAT('My', 'S', 'QL'); 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL'); NULL mysql> SELECT CONCAT(14.3); '14.3'
对于引用的字符串,可以通过放置连接来执行连接 字符串彼此相邻:
mysql> SELECT 'My' 'S' 'QL'; 'MySQL'
答案 1 :(得分:0)
在MySQL中进行字符串连接的表达式将使用CONCAT
函数,例如
CONCAT(f_name,' ',l_name)
答案 2 :(得分:0)
虽然您可以连接数据库中的字段,但如果您这样做,则会遇到问题。例如,假设您使用bob chan
搜索concat(f_name, ' ', l_name) LIKE %searching%
,则结果集中不会显示bobby chan
,因为bob chan
不在bobby chan
中(您有{ {1}}在中间)。
更好的选择是拆分搜索字符串:by
,然后使用原始过滤器:
$parts = explode(' ', $searching)
作为旁注,您需要通过转义字符串来防止注入。