0

我试图从数据库中获取用户消息,其中用户是发件人或收件人与另一个唯一用户,我不知道如何编写 WHERE 语句。这就是我现在所拥有的:

$sql = " SELECT sender, 
       receiver, 
       timestamp, 
       message 
FROM   messages 
WHERE  ( receiver = '$log_username' 
         AND sender = '$messageOther' ) 
        OR ( receiver = '$messageOther' 
             AND sender = '$log_username' ) 
ORDER  BY timestamp DESC";
$query = mysqli_query($db_conx, $sql);
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
    $message = $row["message"];
    $sender = $row["sender"];
    $receiver = $row["receiver"];
    $timestamp = $row["timestamp"];
    $messagehtml .= 'Sender: '.$sender.' | Receiver: '.$receiver.' | Message: '.$message.' | Timestamp '.$timestamp.'<br />';
    }

编写此内容以获得该结果的最佳方法是什么?

4

1 回答 1

0

如果您的意思$log_username应该是senderorreceiver并且另一个值$messageOther应该是senderor 或者receiver以下查询将为您工作:

SELECT sender, receiver, timestamp, message 
FROM messages 
WHERE ((receiver='$log_username' AND sender='$messageOther') OR
(receiver='$messageOther' AND sender='$log_username'))
ORDER BY timestamp DESC

sqlfiddle

好吧,而不是AND你需要在OR任何地方使用。尝试以下,它适用于我的测试表:

SELECT sender, receiver, timestamp, message 
FROM messages 
WHERE ((receiver='$log_username' AND receiver='$messageOther') OR
(sender='$messageOther' AND sender='$log_username'))
ORDER BY timestamp DESC

于 2013-10-24T02:50:29.797 回答