我已经建立了一个搜索功能,在我的网站上使用类似的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%'");在这种情况下,正确的语法是什么?
发布于 2015-11-19 06:05:41
可以使用CONCAT(str1,str2,...)函数连接多个值。
SELECT * FROM contact WHERE concat( f_name, ' ', l_name ) LIKE '%$searching%'文档参考:
CONCAT(str1,str2,...)返回连接参数所产生的字符串。可能有一个或多个论点。如果所有参数都是非二进制字符串,则结果是一个非二进制字符串。如果参数包含任何二进制字符串,则结果是二进制字符串。数值参数转换为其等效的非二进制字符串形式。 如果任何参数为空,则CONCAT()返回NULL。 mysql>选择CONCAT('My','S','QL');'MySQL‘mysql>选择CONCAT('My',NULL,'QL');空mysql>选择CONCAT(14.3);'14.3’ 对于引用的字符串,可以通过将字符串放置在彼此旁边来执行连接: mysql>选择'My‘S’'QL';'MySQL‘
发布于 2015-11-19 06:07:23
在MySQL中执行字符串连接的表达式将使用CONCAT函数。
CONCAT(f_name,' ',l_name)发布于 2015-11-19 06:13:02
虽然您可以连接数据库中的字段,但是如果这样做,就会遇到问题。例如,如果使用bob chan搜索concat(f_name, ' ', l_name) LIKE %searching%,则不会在结果集中获得bobby chan,因为bob chan不在bobby chan中(中间有by )。
更好的选择是拆分搜索字符串:$parts = explode(' ', $searching),然后使用您的原始筛选器:
WHERE f_name LIKE '%$parts[0]%' OR l_name LIKE '%$parts[1]%'作为附带说明,您将希望通过转义字符串来防止注入。
https://stackoverflow.com/questions/33796377
复制相似问题