“重复更新时插入”仍会插入重复项


"insert on duplicate update" still inserts duplicates

我有一个以descriptionId作为主键的mysql表,它是自动递增的。 它还有一个"内容"和一个"价格"列等等。

我还有一个由多个输入框组成的表单,其中包含描述表中价格和内容列的当前数据库值。 提交表单后,我想使用新值更新表,如果删除任何输入框,则必须从表中删除该记录。

我还设法定义了三个数组来保存所有表列的值。这些数组如下:$descrId,$content,$price

当我提交表单时,php 文件循环遍历这些数组并执行以下查询:(我已经验证了这些数组,以便它们正常工作)

INSERT INTO     
description(descriptionId,content,price,orderNo,salesPerson,dateTime,updated)
VALUES('{$descrId[$k]}','{$content[$k]}','{$price[$k]}','{$orderId}','{$sale}',NOW(),1 ) 
ON DUPLICATE KEY UPDATE content=VALUES(content),price=VALUES(price),updated=1, dateTime=NOW()

但是,每当我按提交时,此查询都会不断复制值。

感谢您的时间...

当我读到你的问题时,ON DUPLICATE KEY永远不会发生,因为你的主是一个自动递增的值,每次你在表中插入一些东西时,它都是+1,所以它永远不会有重复的值 - 这或多或少是AUTO INCREMENT背后的想法。

所以答案是选择另一列,即 orderNodateTime,使其UNIQUE,然后重试查询。

更新
或者,您可以组合两个或多个列并将它们定义为(唯一)键。
如果这也不适用于您的情况,请在插入数据时使用一些哈希函数/算法,并将该哈希值与表中的其他值一起存储。