加入表两个MySQL表和显示效果

问题描述 投票:0回答:2

我呼吁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 with username column接收器名称。我在PHP新困惑我怎么能实现它。让我知道如果有人能帮助我实现了我的任务。非常感谢!

注:t_chat表有用户ID女巫列名叫做发送者和接收者,目前我在上面的表格显示的是用户ID,而不是我想要显示的用户名。谢谢

php mysql
2个回答
1
投票

这些连接可能是这个样子:

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

在这个例子中我连接表两次(如用户1和用户2),使得t_user表获取每个查找独立地被引用。

我也用AS,使他们更容易在后面的代码中引用了每列的名称。


0
投票

试试这个SQL(该T_USER表必须有匹配从t_chat的iduserid列):

$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您可以从教程发现:

https://coursesweb.net/php-mysql/mysql-inner-left-join-right-join_t

© www.soinside.com 2019 - 2024. All rights reserved.