【问题标题】:MySQL simplifying a Select & Update commandMySQL 简化 Select & Update 命令
【发布时间】:2023-04-11 09:11:01
【问题描述】:

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

作者:

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

【问题讨论】:

    标签: php mysql sql select sql-update


    【解决方案1】:

    您可以使用子查询:

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

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

    【讨论】:

    • 谢谢你,Chris K。我用你建议的子查询替换了上面提到的代码块,它奏效了。非常感谢您的帮助。
    猜你喜欢
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2020-07-20
    • 2010-12-29
    • 2013-10-25
    • 2014-03-10
    相关资源
    最近更新 更多