0

我有一个以 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()

但是,只要我按下提交,这个查询就会不断重复这些值。

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

4

1 回答 1

1

正如我所读到的,您的问题ON DUPLICATE KEY永远不会发生,因为您的主键 是一个自动递增的值,每次您在表中插入某些内容时,它都会为 +1,因此它永远不会有重复的值 - 这或多或少是背后的想法AUTO INCREMENT

所以答案是选择另一列,即orderNoor dateTime,创建它UNIQUE,然后再尝试查询。

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

于 2012-07-06T09:38:17.027 回答