我有一个包含超过130列/字段的产品信息表。
我想编写一个PHP脚本,将新产品添加到表中,或者更新现有产品(如果已存在)。第一个字段是产品密钥。
产品信息存储在编号的php数组中:$ product_info [0]到$ product_info [130]。
基本上是这样的:
INSERT INTO table (a,b,c) VALUES ($product_info[0],$product_info[1],$product_info[2])
ON DUPLICATE KEY UPDATE a='$product_info[0]', b='$product_info[1]', c='$product_info[2]'
是否有比两次输入130个字段更有效的东西?
答案 0 :(得分:9)
是的,使用VALUES()
功能:
INSERT INTO `table` (a, b, c) VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE a = VALUES(a), b = VALUES (b), c = VALUES(c)
基本上,在UPDATE
部分中,VALUES(column)
将返回当前行中该列的指定值。所以你可以做一些有趣的事情:
ON DUPLICATE KEY UPDATE
a = VALUES(a),
b = VALUES(b) + VALUES(c),
该语法之美,它还支持多个插入行:
INSERT INTO `table` (a, b, c)
VALUES (?, ?, ?),
VALUES (?, ?, ?),
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE a = VALUES(a), b = VALUES (b), c = VALUES(c)
答案 1 :(得分:1)
不幸的是MySQL不支持合并...拥有ORM可以帮助减轻编码多个IF EXISTS UPDATE ... ELSE INSERT代码的痛苦
答案 2 :(得分:0)