如何使收件箱中既显示发送者也接收消息的聊天记录

时间:2019-04-07 16:56:08

标签: php mysql

我正在尝试建立一个聊天系统。但是我无法显示哪个用户连接到哪个用户。

'SELECT *
 FROM accounts
 INNER JOIN messages
 ON accounts.id = messages.from_user WHERE to_user = ? AND from_user != ? GROUP 
 BY from_user';

 mysqli_stmt_bind_param($stmt,'ss',$user,$user); // $user is a session user

上面的查询仅显示与接收消息的用户的连接,而不显示与发送消息的用户的连接。例如sam向freddy发送了消息,因此我的查询显示freddy他收到了消息,但没有显示sam他发送了消息

这是我的桌子

id | from_user   |  to_user  | msg
------------------------------------
 1 |    1        |     3     | hi

1 个答案:

答案 0 :(得分:1)

您必须两次连接表accounts才能获取发送消息的用户和发送消息的用户的详细信息:

SELECT *
 FROM messages m
 INNER JOIN accounts a1 ON a1.id = m.from_user 
 INNER JOIN accounts a2 ON a2.id = m.to_user

这将为您提供messages表中所有消息的详细信息。
然后,您可以使用WHERE应用任何条件或使用GROUP BY进行分组。