我有两个表:

表A存储用户信息:

Name | Sex | Location | Other | User_ID

表B存储私有消息以及该消息的发送者,接收者:

Message_content | Sender_ID | Receiver_ID | Message_ID

现在给定一个用户(接收者)名称,我想获取消息内容和发送者的名称,是否可以通过一个简单的查询完成它?

我下面的代码只能获取Message_content,而不能获取发件人的名称:

$result = mysql_query("SELECT PersonalMsg.content FROM PersonalMsg
INNER JOIN UserDB ON UserDB.User_ID=PersonalMsg.Receiver_ID
WHERE UserDB.Name = '$userName'");


顺便说一句,我只是启动表B,请让我知道该表的设计是否不好,无论如何我都没有设计数据库的经验。提前致谢!

最佳答案

是的,您可以通过添加另一个联接来实现:

SELECT PersonalMsg.content, u2.Name FROM PersonalMsgINNER JOIN UserDB u1 ON UserDB.User_ID=PersonalMsg.Receiver_IDINNER JOIN UserDB u2 ON UserDB.User_ID=PersonalMsg.Sender_IDWHERE u1.Name = '$userName'

您应该真正改变两件事:


停止使用mysql_query()(改为使用pdo
使用prepared statements缓解SQL注入攻击

09-07 12:23