我有两张桌子
参与者:thread_id,participant_id
消息:message_id,thread_id,message_poster_id,消息
提供了thread_id如何确保不是参与者的人不会读取他们不属于的线程?这可能在一个查询中,或者我必须运行一个查询然后使用php来说明是否允许他们运行第二个查询来获取消息?
我拥有的两个变量是sessionid和thread_id。
我的逻辑是SELECT消息。* WHERE thread_id ='1'且参与者是thread_id ='1'FROM参与者表的PART(而不是)。
问题在于还有其他参与者,我需要显示该线程的所有消息,而不仅仅是会话持有者。换句话说,我正在寻找一个查询来获取会话持有者参与的给定线程中的所有消息,即使他没有发布消息(参与者在参与者表中给出)。
答案 0 :(得分: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不是参与者。否则,查询将返回属于该线程的所有消息。