首页 > 解决方案 > 如果不存在则插入或更新如果存在 PHP

问题描述

如果表中的值不是同一行,我想插入,但是如果存在具有相同值的行,我只想更新一个将 +1 添加到当前值的行。我有当前的代码,但它似乎没有更新存在的行中的值。

INSERT INTO raport(id, wykonawca, tytul, czas_trwania, powtorzenia) 
        VALUES('','$wykonawca2','$tytul2','$czas_trwania2', '$powtorzenia2') 
        ON DUPLICATE KEY UPDATE wykonawca='$wykonawca2', tytul='$tytul2', czas_trwania='$czas_trwania2', 
        powtorzenia='$powtorzenia2'+1

标签: phpmysql

解决方案


确保您的表具有声明为 UNIQUE 或 PRIMARY KEY 的列,并且不是自动增量列

如果您指定 ON DUPLICATE KEY UPDATE 子句并且要插入的行将导致 UNIQUE 索引或 PRIMARY KEY 中的重复值,则会发生旧行的 UPDATE。例如,如果列 a 被声明为 UNIQUE 并且包含值 1,则以下两个语句具有相似

INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE t1 SET c=c+1 WHERE a=1;

的效果:(对于 a 是自增列的 InnoDB 表,效果不同。对于自增列, INSERT 语句会增加自动增量值,但 UPDATE 不会。)

MySQL 参考

编辑:您的 id 列是空的,您需要传递一个值


推荐阅读