Php 在SQL中使用LIKE运算符时组合字段
好的,我正在从网页中检索Php 在SQL中使用LIKE运算符时组合字段,php,mysql,Php,Mysql,好的,我正在从网页中检索fullname,以筛选客户列表,但我不确定哪部分是名字或姓氏,因此我需要运行类似的查询,如下所示: "SELECT sc.*, c.firstname, c.lastname,c.email FROM scoop_customer AS sc LEFT JOIN customer AS c ON sc.customer_id = c.customer_id WHERE c.firstname + ' ' + c.lastname LIKE '%".$fullname
fullname
,以筛选客户列表,但我不确定哪部分是名字或姓氏,因此我需要运行类似的查询,如下所示:
"SELECT sc.*, c.firstname, c.lastname,c.email FROM scoop_customer AS sc LEFT JOIN
customer AS c ON sc.customer_id = c.customer_id WHERE c.firstname + ' ' + c.lastname
LIKE '%".$fullname."%'"
但它对我来说似乎不起作用,即使我尝试了很多次,通常它应该从DB返回值。你能告诉我哪里做错了吗?使用CONCAT(c.firstname',c.lastname)
使用CONCAT(c.firstname',c.lastname)
试试看
试一试
CONCAT将很适合这些操作 请查看mysql文档 选择sc.*、c.firstname、c.lastname、c.email FROM scoop_客户作为sc LEFT JOIN
客户身份为sc.customer\u id=c.customer\u id,其中CONCAT(c.firstname,,,c.lastname)类似“%”。mysql\u real\u escape\u string($fullname)。“%”。CONCAT非常适合这些操作 请查看mysql文档 选择sc.*、c.firstname、c.lastname、c.email FROM scoop_客户作为sc LEFT JOIN
客户身份为sc.customer\u id=c.customer\u id,其中CONCAT(c.firstname,,,c.lastname)类似“%”。mysql\u real\u escape\u string($fullname)。“%”“%””我将全名分为第一个和最后一个,并进行两次类似的检查,并在每个检查的开头去掉通配符%。以类似开头的串联和通配符将破坏名称字段上的任何索引
当然,如果你的表中只有几千个客户,那么索引将不会有多大作用,但是当你进入100000的时候,你会感觉到它 我会将全名分为第一个和最后一个,并进行两次类似的检查,在每个检查的开头去掉通配符%。以类似开头的串联和通配符将破坏名称字段上的任何索引
当然,如果你的表中只有几千个客户,那么索引将不会有多大作用,但是当你进入100000的时候,你会感觉到它 我添加了mysql\u real\u escape\u字符串,说明您以前没有逃逸过它。
对于这个问题,诀窍是
或,而不是CONCAT
".... WHERE c.firstname LIKE '%".mysql_real_escape_string($fullname)."%'
OR c.lastname LIKE '%".mysql_real_escape_string($fullname)."%'"
我添加了mysql\u real\u escape\u字符串,说明您以前没有逃逸过它。
对于这个问题,诀窍是或,而不是CONCAT
".... WHERE c.firstname LIKE '%".mysql_real_escape_string($fullname)."%'
OR c.lastname LIKE '%".mysql_real_escape_string($fullname)."%'"
警告您的代码可能容易受到sql注入攻击。或者,如果搜索“%”且表足够大,则拒绝服务。警告您的代码可能容易受到sql注入攻击。或者,如果搜索“%”且表足够大,则拒绝服务