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

时间:2015-02-16 23:17:45

标签: mysql pdo set

我试图更新某个行的某个列WHERE id是一定的值。问题是,列的数量/名称是可变的,它们各自的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的列的BOTH,并且这不是我想要的。是否只能通过查询进行此查询?

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

1 个答案:

答案 0 :(得分:0)

你可以这样做

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);