2013-01-21 98 views
5

所以这里是我想要做的事情。我有两个表在sql 我想回显所有的消息和消息发件人的用户名。php sql连接主键和外键(链表)

这里是如何设置表格。

table name: user 
user_id user_name 
    1  abc 
    2  bob 
    3  pqr 


table2 name : message 
intro_id  user_id  msg 
    1    4   abc 
    2    4   jkl 
    3    2   cbd 

期望的输出会是这样

新ABC

新JKL

摆锤CBD

我的代码到目前为止仅输出消息

$result = mysql_query("SELECT * FROM message"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['msg'] ; 
    } 
+1

虽然这个问题,我敢肯定,已经回答了无数次+1表的视觉效果 – user1775570

回答

4

试试这个查询来获取

mysql_query("SELECT user.user_name, message.msg FROM message INNER JOIN user ON message.user_id = user.user_id"); 
while($row = mysql_fetch_array($result)) 
{ 
    echo $row['user_name'] . ": " . $row['msg'] ; 
} 
+0

谢谢您的回答。你知道你的方法或CoBolt的其他答案是否更有效?如果有的话请解释! – ramr

+1

这是绝对等价的,我给你写连接的标准方式,请看看http://en.wikipedia.org/wiki/Join_(SQL)#Inner_join并注意'message.user_id'上的索引,当你在'message'里面得到很多记录时,它会提高性能。 – Igor

4
$result = mysql_query("SELECT user.user_name,message.msg FROM user,message WHERE user.user_id=message.user_id"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['user_name']." ".$row['msg']; 
    } 

这应该工作的USER_NAME。

请评论,如果它不