0

我有这个 PM 系统,用户可以在其中互相写信。当我显示我的 MySQL 表中可用的 PM 时deleted_senderdeleted_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。

4

2 回答 2

3

好吧,想想你想要做什么:如果发件人没有删除它,你想把它显示给发件人,反之亦然。

换句话说,您想显示是否
(发件人=用户和发件人尚未删除)或(收件人=用户和收件人尚未删除)

从这里你建立你的查询:

... WHERE (`sender_id`={$userdata['id']} AND `deleted_sender`=0)
       OR (`receiver_id`={$userdata['id']} AND `deleted_receiver`=0)
于 2013-09-24T12:29:39.000 回答
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')"
);

这也可能导致无效结果,因为您不知道您的结果是关于发送还是接收...取决于您喜欢的显示。但是您可能必须提出两个不同的请求。

于 2013-09-24T12:30:31.007 回答