我在创建收件箱系统时遇到问题。 我想要做的是在“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'");
这失败了。任何人都可以透露来自双方的消息吗?
答案 0 :(得分: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或timestamp的内容。
答案 1 :(得分:1)
你混淆了布尔运算符,尝试将some()放入...(a AND b)OR(c AND d)。
您所要完成的工作就是获取您与另一位联系人之间的所有消息。你知道吗?
答案 2 :(得分: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')
答案 3 :(得分:0)
试试这个:
$ MessageQuery = mysql_query(“SELECT * FROM messages WHERE ToUName ='$ ToUName'|| FromUName ='$ Fromuname'”);