我有一个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()
但是,此查询会在我按下提交时随时复制值。
我很感激你的时间....
答案 0 :(得分:1)
当我看到你的问题ON DUPLICATE KEY
永远不会发生,因为你的主键是一个自动递增的值,每次你在表格中插入一些东西时都是+1,所以它永远不会有重复的价值 - 这个想法或多或少落后于AUTO INCREMENT
。
所以答案是选择另一列,即orderNo
或dateTime
,将其设为UNIQUE
,然后再次尝试查询。
<强>更新强>
或者,您可以组合两个或更多列,并将它们定义为(唯一)键
如果这在你的情况下也不适用,那么在插入数据时使用一些散列函数/算法,并将该散列与表中的其他值一起存储。