Php 连接两个MySQL表并在表中显示结果

Php 连接两个MySQL表并在表中显示结果,php,mysql,Php,Mysql,我有两张桌子,分别叫t_user和t_chat。我试图在PHP表格中显示来自t_chat的消息,如下所示 $quotes_qry="SELECT * FROM t_chat ORDER BY id DESC LIMIT $start, $limit"; $result=mysqli_query($mysqli,$quotes_qry); <?php $i=0;

我有两张桌子,分别叫t_user和t_chat。我试图在PHP表格中显示来自t_chat的消息,如下所示

     $quotes_qry="SELECT * FROM t_chat ORDER BY id DESC LIMIT $start, $limit";
     $result=mysqli_query($mysqli,$quotes_qry);
    <?php   
                            $i=0;
                            while($row=mysqli_fetch_array($result))
                            {   

                        ?>
                            <tr>

                              <td><?php echo ++$sr+$start;?></td> 
                              <td><?php echo $row['sender'];?></td>                
                              <td><?php echo nl2br($row['receiver']);?></td>
                              <td><?php echo nl2br($row['message']);?></td>
                              <td><?php echo time_elapsed_string($row['time']);?></td>
                              <td><a href="?id=<?php echo $row['id'];?>" class="" onclick="return confirm('Are you sure you want to delete this row?');"><img src="images/delete-icon.png"></a></td>
                            </tr>
                    <?php
$i++;
                        }
                ?> 
我想显示发送方和接收方的名称,该名称位于名为t_user的表中的username列中。我是PHP新手,不知道如何实现它。如果有人能帮我完成任务,请告诉我。非常感谢

注意:t_聊天表有一个名为sender和receiver的userid,当前我在上面的表中显示该userid,而不是显示username。
谢谢

连接可能如下所示:

SELECT t_chat.sender AS 'sender', t_chat.receiver AS 'receiver', t_chat.message AS 'message', t_chat.time AS 'time', t_chat.id AS 'id', user1.username AS 'senderusername', user2.username AS 'receiverusername'  
FROM t_chat 
LEFT JOIN t_user AS user1 ON t_chat.sender = user1.id
LEFT JOIN t_user AS user2 ON t_chat.receiver = user2.id
ORDER BY id DESC
在本例中,我将两次作为user1和user2连接表,以便在每次查找时独立引用t_user表


我还使用AS为每个列指定了一个名称,以便以后在代码中更容易引用。

尝试使用此sql。t\u user表必须有一个与t\u chat中的userid匹配的id列:

$quotes_qry="SELECT t1.sender, t1.receiver, t1.message, t1.time, t2.username FROM t_chat AS t1 INNER JOIN t_user AS t2 ON t1.userid=t2.id ORDER BY t1.id DESC LIMIT $start, $limit";
有关MySQL JOIN的更多详细信息和示例,您可以在以下教程中找到:


t_聊天表中是否也有用户名栏?@tshimkus我们在t_聊天表中有发送者和接收者的用户id,而不是用户名。我想从t_用户处获取用户名。感谢您可以使用SQL连接-要连接表,您需要在两个表中都有一个字段,用于匹配记录。你有这样的东西吗?它们是否只有一行索引是唯一的?@tshimkus表t_中的yes用户id与t_chat中的sender和receiver相同。这两种情况在两个表中都很常见。第一行中的Thankserror称为Parse error:syntax error,意外的“sender”T_字符串在我的bad中。您将查询包装在双引号中,因此字符串将被拆分。用单引号替换我的示例中的所有双引号,或者像这样转义\n是的,我已经解决了它,很抱歉,但我不知道如何显示它的值?与您以前的做法相同:$row['message']、$row['senderusername']等。AS为列提供了唯一的名称,因此您不必键入$row['t\u chat.message']要访问该列,query不会给出任何错误,但也不会在表中显示任何内容。谢谢