1

我在创建收件箱系统时遇到问题。我想做的是在“ViewMessages.php”中我试图从 MYSQL 表中提取信息以显示消息。

我的第一个声明是:

    $MessageQuery = mysql_query("SELECT * FROM messages WHERE ToUName='$ToUName' AND FromUName='$FromUName'");

但我意识到了一个缺陷,它只会显示以 1 方式发送的消息。我试过类似的东西:

    $MessageQuery = mysql_query("SELECT * FROM messages WHERE ToUName='$ToUName' AND FromUName='$FromUName' OR FromUName='$ToUName' AND ToUName='$FromUName'");

这失败了。任何人都可以阐明双方的信息吗?

4

4 回答 4

3

工会呢?

$MessageQuery = mysql_query("(SELECT * FROM messages WHERE ToUName='$ToUName' AND FromUName='$FromUName') UNION (SELECT * FROM messages WHERE FromUName='$ToUName' AND ToUName='$FromUName')");

注意:如果您需要任何特定顺序的消息,您可以ORDER BY在查询结束时使用,希望您有类似 message_id 或时间戳之类的附加到每个查询。

于 2012-11-05T14:50:52.000 回答
1

您混淆了布尔运算符,尝试将一些 () 放入其中.. (a AND b) OR (c AND d)。

此外,您要完成的是获取您和另一位联系人之间的所有消息。你知道吗?

于 2012-11-05T14:50:49.657 回答
1
SELECT * 
FROM messages
WHERE '$ToUName' in (ToUName, FromUName)
OR '$FromUName' in (ToUName, FromUName)

或者如果您更喜欢查询中首先列出的列

SELECT * 
FROM messages
WHERE ToUName in ('$ToUName', '$FromUName')
OR FromUName in ('$ToUName', '$FromUName')
于 2012-11-05T14:52:09.210 回答
0

试试这个:

$MessageQuery = mysql_query("SELECT * FROM messages WHERE ToUName='$ToUName' || FromUName='$FromUName'");

于 2012-11-05T14:51:08.737 回答