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

时间:2012-07-06 09:17:43

标签: php mysql

我有一个mysql表,其中descriptionId作为主键,并且它是自动递增的。它还有一个“内容”和“价格”列以及更多。

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

我还设法定义了三个数组来保存我所有表的列的值。这些数组如下:$ 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()

但是,此查询会在我按下提交时随时复制值。

我很感激你的时间....

1 个答案:

答案 0 :(得分:1)

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

所以答案是选择另一列,即orderNodateTime,将其设为UNIQUE,然后再次尝试查询。

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

相关问题