我有这个PM系统,用户可以互相编写。当我在MySQL表deleted_sender
和deleted_receiver
如果deleted_sender
为1,那么发送PM的人不应该在列表中看到它。如果deleted_receiver
为1,则收到PM的人员应该无法看到它。
我的问题是,如何使用mysql查询执行此操作?目前我有这个:
$r=mysql_query("
SELECT * FROM private_messages
WHERE
sender_id='".$userdata['id']."'
OR
receiver_id='".$userdata['id']."'
AND
(deleted_receiver='0' OR deleted_sender='0')");
虽然,这只是在发送者和接收者都显示PM。
答案 0 :(得分:3)
好吧,想想你要做的事情:如果发件人没有删除它,你想把它显示给发件人,反之亦然。
换句话说,你想表明是否
(发件人=用户和发件人未删除)或(收件人=用户和收件人未删除)
从此构建您的查询:
... WHERE (`sender_id`={$userdata['id']} AND `deleted_sender`=0)
OR (`receiver_id`={$userdata['id']} AND `deleted_receiver`=0)
答案 1 :(得分:0)
$r = mysql_query(
"SELECT * FROM private_messages
WHERE (sender_id='".$userdata['id']."' AND deleted_sender='0')
OR (receiver_id='".$userdata['id']."' AND deleted_receiver='0')"
);
此外,这可能会以无效结果结束,因为您不知道结果是关于发送还是接收...取决于您喜欢的显示。但您可能需要提出两个不同的请求。