PHP - Mysql选择AND OR

时间:2013-09-24 12:26:26

标签: php mysql

我有这个PM系统,用户可以互相编写。当我在MySQL表deleted_senderdeleted_receiver

中显示可用的PM时

如果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。

2 个答案:

答案 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')"
);

此外,这可能会以无效结果结束,因为您不知道结果是关于发送还是接收...取决于您喜欢的显示。但您可能需要提出两个不同的请求。