php - MySQL 简化了一个 Select & Update 命令

标签 php mysql sql select sql-update

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

作者:

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 命令合并为一个以实现相同的结果?

最佳答案

您可以使用子查询:

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

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

关于php - MySQL 简化了一个 Select & Update 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580126/

相关文章:

php - 如何解码 php 中的 url,其中 url 使用 encodeURIComponent() 编码

php - Yoast SEO 生成空白站点地图

php - 如何在 PHP 中测试 URL 的文件类型?

php - 意外的 mysql 错误说必须是 mysqli_result 的实例?

sql - PostgreSQL 8.4 : Summation by account numbers

php - 如何重构这段代码?

mysql - 在连接表上使用 where

MySQL 与加入/选择标准作斗争

mysql - 如何在MySQL中选择特定的人?

mysql - SQL查询日期内销售的产品数量?