1

我正在为我的网站制作一个简单的消息系统功能,登录的成员可以互相发送消息,为此我使用两个表作者(我的用户表)和消息。它们描述如下:

作者:

aId int(20) NO  PRI NULL    auto_increment
aUser   varchar(30) NO  UNI NULL    
aPass   varchar(40) NO      NULL    
aEmail  varchar(30) NO  UNI NULL    
aBio    mediumtext  YES     NULL    
aReg    datetime    NO      NULL    

留言:

msgId   int(20) NO  PRI NULL    auto_increment
mSender int(20) NO  MUL NULL    
mReciever   int(20) NO  MUL NULL    
mTitle  tinytext    NO      NULL    
mBody   mediumtext  NO      NULL    
mRead   tinyint(4)  NO      NULL    
mDate   datetime    NO      NULL    

我也有一个约束外键messages (mReciever) REFERENCES authors(aId)); 目前,当登录用户想要向另一个用户发送消息时,html 表单有一个“用户名,消息”输入元素 - 非常简单。对于提交执行 - 首先 php 脚本使用 select 命令查询 authors 表以检查用户是否存在,然后从结果集中获取用户 id,然后 php 脚本的第二部分可以使用结果集中的 aId消息表上的插入命令。虽然这是有效的,但我想知道是否会有更简化/优雅的解决方案,也许将两个 MySQL 命令组合成一个以达到相同的结果?

4

1 回答 1

3

您可以使用子查询:

Insert into Messages (mReceiver, mBody) Values ((select aId from Authors where aUser = @user), @message)

其中@user 是用户名,@message 是消息。

于 2013-03-22T21:30:57.173 回答