2012-11-05 37 views
1

我在創建收件箱系統時遇到問題。 我想要做的是在「ViewMessages.php」我試圖從MYSQL表中獲取信息以顯示消息。PHP收件箱系統

我首先聲明的是:

$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

SQL表結構,也沒有發生過。 – moonwave99

+2

您正在使用[**的**過時的數據庫API(http://stackoverflow.com/q/12859942/19068),並應使用[現代更換](http://php.net/manual/en/ mysqlinfo.api.choosing.php)。不要用'mysql_ *'編寫新的代碼。 – Quentin

回答

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') 
+0

您已經在列中提到了PHP $變量。 –

+0

那麼?參見[這裏](http://sqlfiddle.com/#!2/f4346/1) –

+0

我剛纔試了這個方法,我使用$ _GET來獲取信息的來往,而且如果我修改ToUName爲了「測試」並保留FromUName,它返回了舊變量的結果。 –

1

你布爾運算符混合起來,儘量把一些()成..(A和B)或(c和d)。

還有什麼你acomplish是讓你和另一個聯繫人之間的所有消息。你知道嗎?

+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或時間戳。

0

嘗試:

$ MessageQuery =請求mysql_query( 「SELECT * FROM消息WHERE ToUName = '$ ToUName' || FromUName = '$ FromUName'」);