Php 案例MySQL关闭后与其他列一起打开

Php 案例MySQL关闭后与其他列一起打开,php,mysql,sql,database,Php,Mysql,Sql,Database,我有两个专栏: reaction AND status 列状态的默认文本: off UPDATE profile_post SET status = CASE WHEN 'off' THEN 'on', reaction +1 WHEN 'on' THEN 'off', reaction -1 END W

我有两个专栏:

reaction AND status
列状态的默认文本:

off
            UPDATE profile_post SET    
            status = CASE                   
            WHEN 'off' THEN 'on', reaction +1
            WHEN 'on' THEN 'off', reaction -1
            END
            WHERE post = '$postid1'
如何:

off
            UPDATE profile_post SET    
            status = CASE                   
            WHEN 'off' THEN 'on', reaction +1
            WHEN 'on' THEN 'off', reaction -1
            END
            WHERE post = '$postid1'

我一直在尝试使用WHEN CASE,但不知怎么的,它总是给我带来错误。

您正在更新多个值,因此您可以尝试以下方法:

UPDATE profile_post SET
   reaction = reaction + 1,
   status = CASE
                 WHEN status  = 'off' THEN 'on'
                 WHEN status = 'on' THEN 'off'
                 ELSE 'on'

   END
WHERE post = '$postid1'
编辑

为了向“反应”列添加条件(如答案中的注释),请尝试以下操作:

UPDATE profile_post SET
   reaction = CASE 
                WHEN status = 'off' THEN reaction + 1
                ELSE reaction - 1
              END,
   status = CASE
               WHEN status = 'on' THEN 'off'
               ELSE 'on'
            END
WHERE post = '$postid1'

您正在更新多个值,因此可以尝试以下操作:

UPDATE profile_post SET
   reaction = reaction + 1,
   status = CASE
                 WHEN status  = 'off' THEN 'on'
                 WHEN status = 'on' THEN 'off'
                 ELSE 'on'

   END
WHERE post = '$postid1'
编辑

为了向“反应”列添加条件(如答案中的注释),请尝试以下操作:

UPDATE profile_post SET
   reaction = CASE 
                WHEN status = 'off' THEN reaction + 1
                ELSE reaction - 1
              END,
   status = CASE
               WHEN status = 'on' THEN 'off'
               ELSE 'on'
            END
WHERE post = '$postid1'

你试过什么代码?请显示您的尝试。显示完整
show CREATE TABLE profile\u post输出。
打开
关闭
是否是
状态
的唯一可能值?您尝试了什么代码?请显示您的尝试。显示完整
show CREATE TABLE profile\u post输出。
打开
关闭
是否是
状态
的唯一可能值?错误。想象一下,最初
status='unknown'
…如果在代码中放入一个ELSE,将status设置为on,那么注释中的SQL可能有明显的拼写错误。编辑您的答案并将修改后的sql放入其中。通过跨多行设置格式,您将发现打字错误。(例如
其他反应-1状态=
实际上需要
其他反应-1结束,状态=
)不错,@MatBailie。我会更新答案的太好了!感谢@MatBailie澄清了错误代码上的错误。想象一下,最初
status='unknown'
…如果在代码中放入一个ELSE,将status设置为on,那么注释中的SQL可能有明显的拼写错误。编辑您的答案并将修改后的sql放入其中。通过跨多行设置格式,您将发现打字错误。(例如
其他反应-1状态=
实际上需要
其他反应-1结束,状态=
)不错,@MatBailie。我会更新答案的太好了!感谢@MatBailie澄清了代码中的错误