[英]multiple but separate WHERE conditions in SQL?
I'm trying to get user messages from the database where the user is either the sender or the recipient with one other unique user, and I can't figure out how to write the WHERE statement. 我正在尝试从数据库中获取用户消息,在该数据库中,用户既是发件人,又是与另一位唯一用户的收件人,但我不知道如何编写WHERE语句。 This is what I have now:
这就是我现在所拥有的:
$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 />';
}
What's the best way of writing this to get that result? 编写此代码以获得结果的最佳方法是什么?
If you mean that $log_username
should be either sender
or receiver
and the other value $messageOther
should be either sender
or receiver
following query will work for you: 如果你的意思是
$log_username
应该是sender
或receiver
和其他价值$messageOther
应该是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
Well instead of
AND
you need to use
OR
everywhere.
好吧
AND
您需要在任何地方使用
OR
而不是
AND
。
Try following, it works on my test table:
尝试以下操作,它可以在我的测试表上运行:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.