如何显示数据库表中的用户和最后一条消息

时间:2017-10-28 07:49:20

标签: php mysql sql mysqli sql-injection

我正在制作聊天系统。在那里,我需要显示用户和他们之间的最后一条消息。 我需要SQL注入。 我想这样表现出来:

enter image description here

我的数据库表:

enter image description here

关于数据库: 邮件有两个副本。因此,copy_uid表示此消息由用户复制。

m_id:消息ID ua_id:收到消息的用户的id u_id:发送消息的用户ID copy_uid:消息应该是两个副本一个发送者和另一个接收者

2 个答案:

答案 0 :(得分:0)

我建议,简化结构消息表:

id :自动增加
SENDER_ID
recipient_id
已发送:bool默认0
文本

user_id的下一条消息

select * from msg order by id desc 
where recipient_id=user_id and sent=0
limit 1

存储$ msgId = msg.id

发送后 update msg set sent = 1其中id = $ msgId

答案 1 :(得分:0)

使用此表格结构:

enter image description here

答案:

SELECT * FROM `message` `m1` 
WHERE m_id IN (
  SELECT MAX(m2.m_id) 
  FROM `message` `m2` WHERE m2.`sender` = 1 OR m2.`receiver` = 1 
  GROUP BY (IF(m2.`sender`= 1, m2.`receiver`, m2.`sender`))) 
ORDER BY time DESC

假设当前用户ID为1

结果:

enter image description here