如何使用PHP根据多列值从MySQL表中搜索值
我需要在表中搜索移动设备、名字或姓氏,并使用PHP和MySQL返回表中的行。我的桌子在下面 数据库用户:如何使用PHP根据多列值从MySQL表中搜索值,php,mysql,Php,Mysql,我需要在表中搜索移动设备、名字或姓氏,并使用PHP和MySQL返回表中的行。我的桌子在下面 数据库用户: id mobile info_id status 1 9937229870 12 1 2 1234567892 13 1 3 2123212324 14
id mobile info_id status
1 9937229870 12 1
2 1234567892 13 1
3 2123212324 14 1
id mobile info_id status
3 2123212324 14 1
数据库用户信息:
info_id fname email lname
12 Jay as@gmail.com Roy
13 Jarin aw@gmail.com Raot
14 Stoks aq@gmail.com Dravid
info_id fname email lname
12 Jay as@gmail.com Roy
13 Jarin aw@gmail.com Raot
db_技能:
skill_id info_id category
1 13 cat1
2 14 cat2
3 15 cat3
例如,如果一个用户的名字是Jay Roy,他们的电子邮件是aw@gmail.com手机是2123212324,然后它会返回:
数据库用户信息:
info_id fname email lname
12 Jay as@gmail.com Roy
13 Jarin aw@gmail.com Raot
14 Stoks aq@gmail.com Dravid
info_id fname email lname
12 Jay as@gmail.com Roy
13 Jarin aw@gmail.com Raot
数据库用户:
id mobile info_id status
1 9937229870 12 1
2 1234567892 13 1
3 2123212324 14 1
id mobile info_id status
3 2123212324 14 1
我该怎么做 使用join
select a.*,b.*,c.* from db_user as a inner join db_user_info b on a.info_id =b.info_id inner join db_skill c on b.info_id = c.info_id where a.mobile = "'.$usermobile.'" and b.email = "'.$useremail.'" and CONCAT(b.fname,' ',b.lname) = "'.$username.'"
用这个啤酒花,它会帮你的
$flname = explode(" ",$name);
$fname= $flname[0];
$lname = isset($flname[1]) ? $flname[1] : $flname[0];
select * from db_user du, db_user_info dui, db_skill ds where du.info_id = dui.info_id AND du.info_id = ds.info_id AND (du.mobile like '%$mobile%' OR dui.fname like '%$fname%' OR dui.lname like '%$lname%' OR dui.email like '%$email%');
编辑:
为名称搜索添加了不同的列和值
您需要的是一个连接
,3个或类似的
子句,可能还有一个不同的
。@Jeff:我需要类似的
。这里我需要搜索数据,应该使用类似的
关键字not where。您在sql查询中尝试过这个吗?对于名称我已经用户喜欢如果你想要相同的电子邮件和手机,然后替换为喜欢,简单!我改变并测试了你的代码,它是搜索的,但是名字的连接不是搜索的。我测试了它不能搜索我的名字,但可以搜索其他两个。是的,就是这样,我或你必须将你的值区分为两个克隆,同样的结果出现了,无法按名称搜索。请尝试打印变量$fname和$lname的值。您得到了什么?很抱歉,这是我的错,它按预期工作。谢谢。
<?php
$sql = "(SELECT content, title, 'msg' as type FROM db_user WHERE content LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')
UNION
(SELECT content, title, 'topic' as type FROM db_user_info WHERE content LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')
UNION
(SELECT content, title, 'comment' as type FROM db_skill WHERE content LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')";
mysql_query($sql);
?>