我见过以下内容(使用VALUES选项):
$query = "INSERT INTO $table (column-1,column-2,column-3) VALUES ('value-1','value-2','value-3') ON DUPLICATE KEY UPDATE SET column1 = value1,column2 = value2,column3 = value3,ID=LAST_INSERT_ID(ID)";
…但我无法想象如何将ON DUPLICATE KEY UPDATE添加到我正在使用的内容中:
$query = "INSERT INTO $table SET
column-1 ='value-1',column-2 ='value-2',column-3 ='value-3'
";
例如:,伪代码
$query = "INSERT INTO $table SET
column-1 ='value-1',column-3 ='value-3'
ON DUPLICATE KEY UPDATE SET
column1 = value1,$id=LAST_INSERT_ID(id)";
$my_id = MysqL_insert_id();
";
我会发现后者更容易阅读.希望澄清,没有在手册中找到一个例子.
干杯
最佳答案
我经常使用ON DUPLICATE KEY UPDATE.对于某些情况,它是非标准的sql扩展,真的值得使用.
原文链接:https://www.f2er.com/mysql/433977.html首先,您需要确保具有唯一的键约束. ON DUPLICATE KEY UPDATE函数只有在出现唯一的密钥违规时才会启动.
这是一种常用的格式:
$query = "INSERT INTO $table (column1,column2,column3)
VALUES ('value-1','value-3')
ON DUPLICATE KEY UPDATE
column1 = values(column1),column2 = values(column2),column3 = values(column3);"
column1 = values(column1)表示“如果查询未达到重复键冲突,则更新column1,其中包含已插入的值.”换句话说,它只是意味着将column1更新为插入工作所需的内容.
查看此代码,您正在更新要插入的所有三个列似乎不正确.哪个列有独特的约束条件?
编辑:根据OP的问题,根据’SET’格式修改MysqL插入语句.
基本上使用ON DUPLICATE KEY UPDATE,您只需像往常一样编写insert语句,但添加ON DUPLICATE KEY UPDATE子句.我相信它应该像这样工作:
INSERT INTO $table
set column1 = 'value-1',column2 = 'value-2',column3 = 'value-3'
ON DUPLICATE KEY UPDATE
column1 = values(column1),column3 = values(column3);
同样,您要插入的列之一必须具有唯一索引(或列的组合).这可能是因为其中一个是主键,或者因为表上有唯一索引.