MYSQL 使用变量更新多列

Posted

技术标签:

【中文标题】MYSQL 使用变量更新多列【英文标题】:MYSQL Updating multiple columns using variables 【发布时间】:2011-10-09 13:39:56 【问题描述】:

我使用这个查询将我所有的值插入到这个数据库中:

INSERT INTO products ($fields) VALUES ($values)

但是,我尝试对 UPDATE 使用相同的格式:

UPDATE products SET ($fields) VALUES ($values) WHERE sku = '$checksku'

...并且出现语法错误:

You have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near '('product,make,model,' at line 1

我想不通。将不胜感激任何帮助。谢谢。

【问题讨论】:

MySQL 文档非常有用:UPDATE Syntax 【参考方案1】:

你需要一个 =

UPDATE products SET ($fields) = $values WHERE sku = '$checksku'

【讨论】:

这不是有效的 MySQL 语法。【参考方案2】:

UPDATE 语法与 INSERT 语法不同。 UPDATE 的一个例子是:

"UPDATE products SET field1 = 'value1', field2 = '$val2', field3 = 5 WHERE sku = '$checksku'"  

虽然这可能不安全。你应该看看parameterized queries。

【讨论】:

我基本上最终使用了这个,只是对我不得不做 23 次(字段数量)感到失望【参考方案3】:
INSERT INTO products ($fields) VALUES ($values) ON DUPLICATE KEY UPDATE field = VALUES(field), ...

不要忘记唯一键或主键

【讨论】:

以上是关于MYSQL 使用变量更新多列的主要内容,如果未能解决你的问题,请参考以下文章

在r中的多列(变量)上使用函数

MySQL更新更改多列是非原子的?

以整齐的方式将多列作为分组变量传递给 UDF

MySQL使用用户变量更新分组排序

MySQL中带有'SET'的两个表之间的多列更新

如何通过传入变量而不是文字来使用多列的 groupBy