mysql/php在重复键上插入/更新

Enk*_*kay 4 php mysql

我有一个包含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]'
Run Code Online (Sandbox Code Playgroud)

有没有比两次输入130个字段更有效的东西?

irc*_*ell 9

是的,有,使用VALUES()功能:

INSERT INTO `table` (a, b, c) VALUES (?, ?, ?)
    ON DUPLICATE KEY UPDATE a = VALUES(a), b = VALUES (b), c = VALUES(c)
Run Code Online (Sandbox Code Playgroud)

基本上,在UPDATE部件中,VALUES(column)将为当前行返回该列的指定值.所以你可以做一些有趣的事情:

ON DUPLICATE KEY UPDATE 
    a = VALUES(a), 
    b = VALUES(b) + VALUES(c), 
Run Code Online (Sandbox Code Playgroud)

该语法的优点是它还支持多个插入行:

INSERT INTO `table` (a, b, c) 
    VALUES (?, ?, ?), 
    VALUES (?, ?, ?), 
    VALUES (?, ?, ?)
    ON DUPLICATE KEY UPDATE a = VALUES(a), b = VALUES (b), c = VALUES(c)
Run Code Online (Sandbox Code Playgroud)