Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL喜欢两列吗?_Php_Mysql - Fatal编程技术网

Php MYSQL喜欢两列吗?

Php MYSQL喜欢两列吗?,php,mysql,Php,Mysql,我有一个名为users的表,它有两列forename和lasname 我已经创建了一个搜索输入,我想知道在搜索时如何加入名字和姓氏列 例如,如果我的表名为Johnny,姓为Bishop 如果用户搜索Johnny或Bishop,则会显示结果,但是如果用户键入全名-Johnny Bishop则不会显示结果 我的SQL看起来像 AND u.forename LIKE '%$name%' OR u.surname LIKE '%$name%' OR u.email = '$name' 一个简单的解决

我有一个名为users的表,它有两列
forename
lasname

我已经创建了一个搜索输入,我想知道在搜索时如何加入名字和姓氏列

例如,如果我的表名为
Johnny
,姓为
Bishop

如果用户搜索Johnny或Bishop,则会显示结果,但是如果用户键入全名-
Johnny Bishop
则不会显示结果

我的SQL看起来像

AND u.forename LIKE '%$name%' OR u.surname LIKE '%$name%' OR u.email = '$name' 

一个简单的解决方案是使用
CONCAT()
连接名字和用户名,并根据结果进行搜索

AND u.forename LIKE '%$name%' 
OR u.surname LIKE '%$name%' 
OR CONCAT(u.`forename`, " ",u.`surname`) LIKE '%$name%' 
OR u.email = '$name' 
如果要包括用户键入多个空格的情况,可以使用
REPLACE()
删除所有空格

OR REPLACE(CONCAT(u.`forename`,u.`lastname`),' ','') LIKE CONCAT('%',REPLACE('$name',' ',''),'%')

展开问题以显示应该如何搜索
Johnny Bishop
。您可以构建一个提取de-forenameSide注释:学习使用参数化查询的php函数。