使用变量列名称更新 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);
我正在尝试更新特定行的特定列,其中 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);