0

我有两张桌子

参与者:thread_id,participant_id

消息:message_id、thread_id、message_poster_id、消息

提供了 thread_id 我如何确保不是参与者的人不会阅读他们不属于的线程?这可能在一个查询中还是我必须运行一个查询然后使用 php 来说明是否允许他们运行第二个查询来获取消息?

我拥有的两个变量是 sessionid 和 thread_id。

我的逻辑是选择消息。* WHERE thread_id = '1' 并且参与者是 thread_id = '1' FROM 参与者表的一部分(不是和)。

问题在于还有其他参与者,我需要显示该线程的所有消息,而不仅仅是会话持有者。换句话说,我正在寻找一个查询来获取会话持有者参与的给定线程中的所有消息,即使他没有发布消息(参与者在参与者表中给出)。

4

1 回答 1

3
SELECT m.* FROM messages m INNER JOIN participants p 
ON m.thread_id=p.thread_id 
WHERE m.thread_id = '1' AND p.participant_id='the-session-holder-id'

如果上述查询返回 0,则表示 session-holder-id 不是参与者。否则,查询将返回属于该线程的所有消息。

于 2012-07-10T01:04:53.823 回答