Php 如何';追加';将一个mysql列复制到另一个mysql列
我利用LIKEPhp 如何';追加';将一个mysql列复制到另一个mysql列,php,mysql,mysqli,Php,Mysql,Mysqli,我利用LIKEmysqliquery在我的网站上建立了一个搜索功能 即 假设我有一个联系人 f_姓名:鲍勃 姓名:陈 如果我在输入字段中键入“bob”,那么如果我键入“chan”,它也会成功地找到bob 我想做的是键入“bob chan”并让它找到联系人 我想有什么方法可以“附加”mysqli列?类似于 $contact = $mysqli->query("SELECT * FROM contact WHERE f_name.' '.l_name LIKE '%$searching%'
mysqli
query在我的网站上建立了一个搜索功能
即
假设我有一个联系人
- f_姓名:鲍勃
- 姓名:陈
$contact = $mysqli->query("SELECT * FROM contact WHERE f_name.' '.l_name LIKE '%$searching%'");
在这种情况下,正确的语法是什么?您可以使用函数连接多个值
SELECT * FROM contact WHERE concat( f_name, ' ', l_name ) LIKE '%$searching%'
文档参考:
CONCAT(str1、str2等)
返回连接参数后产生的字符串。也许
有一个或多个论点。如果所有参数都是非二进制字符串,
结果是一个非二进制字符串。如果参数包含任何二进制
字符串,结果是一个二进制字符串。数值参数是
转换为其等效的非二进制字符串形式
CONCAT()
如果任何参数为NULL,则返回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'
MySQL中用于字符串连接的表达式将使用
CONCAT
函数,例如
CONCAT(f_name,' ',l_name)
虽然您可以在数据库中定义字段,但如果这样做,您将遇到问题。例如,假设您使用
concat(f_name,,,l_name),如%search%
,搜索bob chan
,您不会在结果集中得到bobby chan
,因为bob chan
不在bobby chan
(中间有by
)
更好的选择是拆分搜索字符串:$parts=explode(“”,$search)
,然后使用以下原始筛选器:
WHERE f_name LIKE '%$parts[0]%' OR l_name LIKE '%$parts[1]%'
作为旁注,您需要通过转义字符串来防止注入。非常好的一点。带有绑定占位符的预处理语句是阻止SQL注入的好模式。您是否知道一个简单的mysqli条目,它将覆盖所有可能的单个搜索选项连接?允许用户键入例如“fname、lastname、郊区”或“郊区、lastname、firstname”。基本上涵盖了用户可能键入的条目的任何变化,而无需考虑所有可能性。
WHERE f_name LIKE '%$parts[0]%' OR l_name LIKE '%$parts[1]%'