我有两个表:
表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注入攻击