2017-06-01 74 views
1

我需要搜索表的行名,姓氏或姓氏,並使用PHP和MySQL返回表中的行。我的桌子在下面。如何使用PHP搜索多個列值的MySQL表中的值使用PHP

DB_USER:

id   mobile  info_id    status  
1   9937229870 12     1 
2   1234567892 13     1 
3   2123212324 14     1 

db_user_info:

info_id  fname   email    lname  
    12   Jay   [email protected]  Roy 
    13   Jarin   [email protected]  Raot   
    14   Stoks   [email protected]  Dravid 

db_skill:

skill_id  info_id  category 
1   13   cat1 
2   14   cat2 
3   15   cat3 

例如,如果用戶的名稱是周杰倫羅伊和他們的電子郵件是[email protected]而手機是2123212324,那麼它會返回:

db_user_info:

info_id  fname   email    lname  
12   Jay   [email protected]  Roy 
13   Jarin   [email protected]  Raot 

DB_USER:

id   mobile  info_id    status 
3   2123212324 14     1 

我怎樣才能做到這一點?

+3

你到目前爲止嘗試過什麼? – Jens

+0

你需要的是一個'JOIN',3'或LIKE'子句,或許一個'DISTINCT'。 – Jeff

+0

@傑夫:我需要'喜歡'。 – subhra

回答

1

使用此跳它會幫你

$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%'); 

編輯: 增加了不同的名稱搜索列和值

+0

我測試過它不能搜索我的名字,但可以通過其他兩個搜索。 – subhra

+0

耶是正確的,無論我或你必須區分你的價值成兩個cloums –

+0

你可以相應地更新你的代碼。 – subhra

0

使用加入

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.'" 
0
SELECT 
    db_user.*, 
    db_user_info.*, 
    db_skill.* 
FROM 
    db_user, 
    db_user_info, 
    db_skill 
WHERE 
    db_user_info.info_id = db_user.info_id 
AND 
    db_user_info.info_id = db_skill.info_id 
AND (
     concat_ws(' ', db_user_info.fname, db_user_info.lname) like '%Jay Roy%' 
    OR  
     db_user_info.email = '[email protected]' 
    OR 
     db_user_info.mobile = '2123212324' 

    ) 
+0

在這裏,我需要搜索數據,並應使用'LIKE'關鍵字不在哪裏。 – subhra

+0

你在你的SQL查詢中試過這個嗎?和名稱我已經用戶LIKE,如果你想同樣的電子郵件和手機,然後替換=像,簡單! –

+0

我更改並測試了您的代碼的搜索,但它的名稱串聯不搜索。 – subhra

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

=>你可以嘗試搜索dat一個使用這種格式