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

それがor の$log_usernameいずれsenderreceiverであり、他の値$messageOtherがor のいずれsenderかである必要がある場合は、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 に答える