繁体   English   中英

PHP / MySQL:结合UPDATE查询?

[英]PHP/MySQL: Combine UPDATE queries?

堆栈溢出。 PHP和SQL新手在这里。

作为多用户私人消息系统的一部分,我一直在努力学习如何通过PDO与数据库正确交互,我有两个单独的查询,当用户通过单个函数deleteMessage删除消息时执行( )

UPDATE messages SET s_deleted = 1 WHERE id = :id AND sender = :sender
UPDATE messages SET r_deleted = 1 WHERE id = :id AND recipient = :recipient

他们的工作做得很好,可以完成我的需要,但是正如我现在所做的那样,一个接一个地运行,并没有让我觉得特别有效。

我调查了CASE ,但据我所知,这并不是我所需要的。

有没有办法将这两个查询结合起来,这样我就不会对我的数据库进行无关紧要的请求? 将每个查询拼接成一个单独的函数,即deleteMessageSender()deleteMessageRecipient() ,我会更好吗?

UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
    r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id

正如您所看到的,“技巧”是在不满足条件时简单地将列设置为其现有值,因此只在必要时才更新。

UPDATE messages 
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF (recipient = :recipient, 1, r_deleted)
WHERE id = :id AND 
(sender = :sender OR recipient = :recipient);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM