使用变量列名称更新 SET,变量行中的变量值 PDO

Update SET with variable column names, variable values in variable rows PDO

我正在尝试更新特定行的特定列,其中 id 是特定值。问题是,列的 number/names 是可变的,它们各自的 ID 也是可变的。

例如:

UPDATE table SET column1="hello" WHERE id = 5
UPDATE table SET column2="cucumber" WHERE id = 6

如何在 PDO 中执行单个 mysql 查询来执行此操作? 我尝试的第一件事是...

UPDATE table SET column1="hello", column4="bye" WHERE id IN(5, 6)

但是该查询将更新它在行中找到这两个 ID 的那些列,而这不是我要查找的内容。这个查询只能查询吗?

请记住,SET 之后的参数是可变的,因此要更新的列、它们的值和它们各自的 id 也是可变的。 一个你可以纯粹绑定值的解决方案会很棒,但如果我必须用转义变量构建查询字符串,那也没关系。 谢谢。

你可以做到

UPDATE table t1 JOIN table t2
    ON t1.id= 5 AND t2.id= 6
   SET t1.column1= 'hello',
       t2.column2 = 'cucumber';

或者,如果您想在单个列上执行此操作

UPDATE table
   SET column2 = CASE id
                      WHEN 5 THEN 'hello' 
                      WHEN 6 THEN '' 
                      END
 WHERE id IN(5, 6);