如何使用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

我需要在表中搜索移动设备、名字或姓氏,并使用PHP和MySQL返回表中的行。我的桌子在下面

数据库用户:

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);
?>