我有一个以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
背后的想法。
所以答案是选择另一列,即 orderNo
或dateTime
,使其UNIQUE
,然后重试查询。
更新
或者,您可以组合两个或多个列并将它们定义为(唯一)键。
如果这也不适用于您的情况,请在插入数据时使用一些哈希函数/算法,并将该哈希值与表中的其他值一起存储。