2017-06-20 128 views
2

我有两个表,一个叫'user',另一个叫'user_info'。PHP MySQL从2个不同的表中选择*并显示合并的数据

user;

userid  |  username 
------------------------------ 
1   |  mary 
2   |  john 
3   |  liam 

user_info;

userid  |  desc 
---------------------------------------------------- 
1   |  hello, my name is mary i am 26 
2   |  message me if you need any help 
3   |  please leave me alone 

我想从'user_info'表中显示来自'user'表的信息基于userID的相应描述。所以它会出现像:

Name: John 
UserID: 2 
Description: message me if you need any help 

这是我的代码;

//Query the database 
$resultSet = $mysqli->query("SELECT * FROM user,user_info"); 

//Count the returned rows 
if ($resultSet->num_rows != 0) { 


//Turn the results into an ArrayAccess 
while($rows = $resultSet->fetch_assoc()) 
{ 
    $uid = $rows['UserID']; 
    $username = $rows['username']; 
    $desc = $rows['desc']; 

echo "<p>Name: $username </p> 
     <p>User ID: $uid </p> 
     <p>Description: $desc </p> 
     <hr>"; 
} 

目前它返回尽可能多的不同组合,因为它可以;像这样:

Name:Mary 
UserID:1 
Description:hello, my name is mary i am 26 
-------------------------------------------- 
Name:John 
UserID:1 
Description:message me if you need any help 
-------------------------------------------- 
Name:Liam 
UserID:1 
Description:please leave me alone 
-------------------------------------------- 
Name:Mary 
UserID:2 
Description:hello, my name is mary i am 26 
-------------------------------------------- 
Name:John 
UserID:2 
Description:message me if you need any help 
-------------------------------------------- 
ETC... 

我怎样才能让这个只返回一个基于用户ID(仅一次),以便显示所有与他们正确的用户名,标识和说明用户正确的对应数据?

我不知道怎么回事,解释这一点,如果有人想我进一步阐述我没有问题再次尝试,

+0

使用加入,SELECT * FROM X左加入y其中X。 user_id = y.userid – MIIB

回答

2

更新您的要求

$resultSet = $mysqli->query("SELECT * FROM user 
    JOIN user_info ON user_info.userid = user.userid"); 
+0

完美!这回答了我的问题!感谢您的帮助!新的PHP仍然学习! :) – John107

+0

也只是意识到,我有这个写下来的地方!它总是在你的鼻子下!无论如何,祝贺打800! – John107

+0

@ John107,不客气;) – FieryCat

0

尝试修改您查询如下:

SELECT user.*,user_info.desc FROM user INNER JOIN user_info ON user.userid=user_info.userid; 
+0

感谢您的帮助! – John107

0

做一个内部联接查询是这样的:

Select userId, userName, desc from user inner join user_info on 
user.userid = user_info.userid 

这应该做的伎俩。

+0

谢谢你的帮助! – John107

0

您可以使用join方法根据自己的关系,从不同的表中的数据,按你方问题的查询会是这样,

select user.username as Name, user.userid as UserID, user_info.desc as Description from user inner join user_info on user.userid=user_info.userid; 
相关问题