2012-11-21 31 views
1

我想創建一個簡單的PHP MySQL驅動的消息客戶端。簡單的PHP MySQL消息客戶端

到目前爲止,我有兩個表:

users持有約在網站上註冊的每個人的信息。 userIDfirstNamelastName

mail含有MessageIDfromUserIDtoUserIDmessageSubjectmessageBodydateSent

用戶可以註冊,然後進行登錄。一旦它們被記錄在他們可以查看他們的「收件箱」。

我想弄清楚的是如何列出所有消息,並預覽每條消息,說明它來自哪裏。很明顯,我可以從mail表中獲得fromUserID字段,但這對用戶沒有任何意義,它只是一個數字,我想使用userID並查詢users表並從發件人的名字和姓氏中拉取。

我知道我可以使用JOIN但我不知道該怎麼做,或者我可以使用子查詢?什麼是更好的?

任何建議都非常歡迎。

回答

2

你會想加入的用戶表,是這樣的:。

SELECT m.*, u.* 
FROM mail m 
    LEFT JOIN users u ON u.id = m.fromUserID 
WHERE m.toUserID == 'LoggedInUserId' 
+0

我試過這個,只是把'u.id'改成'u.userID',並且拋出一個錯誤'你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行''附近'=='1001''處使用正確的語法。它必須是「==」嗎?或者它可能是'LIKE'? – Mike

+0

我將它改爲'LIKE',它工作,正是我需要的。謝謝。 – Mike

+0

優秀。聯接幾乎總是比子查詢更快。 – KingGeekus

0

驗證用戶時,在會話中保留用戶標識。 然後你可以使用下面的查詢獲取數據。 從郵件米選擇郵件*,用戶ü其中u.user_id = m.to_user_id和u.user_id = 登錄用戶ID

+0

我不確定我是否正確理解你的答案,但我認爲這不是我之後的情況。我想了解發件人的詳細信息,而不是登錄人員的詳細信息。 – Mike

+0

我認爲你沒有收到我的信息,我們不僅需要收件人信息,還需要收到發件人的信息。我們根據to_userid提取消息,他只是登錄的人。我想我這次很清楚。 – Chella