如何追加'一个mysql列到另一个

时间:2015-11-19 06:02:58

标签: php mysql mysqli

我使用LIKE mysqli查询在我的网站中构建了一个搜索功能。

$contact = $mysqli->query("SELECT * FROM contact WHERE f_name LIKE '%$searching%' OR l_name LIKE '%$searching%'");

假设我有联系方式

  • f_name:bob
  • l_name:chan

如果我输入' bob'在我的输入字段中,如果我键入' chan'

,它将成功找到bob

我希望能够做的是输入' bob chan'让它找到联系人。

我认为有一些方法可以追加' mysqli专栏?像...这样的东西。

$contact = $mysqli->query("SELECT * FROM contact WHERE f_name.' '.l_name LIKE '%$searching%'");

在这种情况下,正确的语法是什么?

3 个答案:

答案 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)

作为旁注,您需要通过转义字符串来防止注入。