php - 如果不存在则插入或更新如果存在 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
解决方案
确保您的表具有声明为 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 不会。)
编辑:您的 id 列是空的,您需要传递一个值
推荐阅读
- sum - 如何在 Racket 中制作更有效的“除数和”?
- spring-boot - 为 docker 容器使用的 GCE 服务帐户添加 Google Calendar API 范围的最佳方法是什么?
- c# - 找不到编译器可执行文件 csc.exe。使用 .net 4.7.2
- c++ - 如何移动刽子手箱线?
- emacs - 无法在 emacs 中安装一些 melpa 包
- php - 已解决 - .htaccess 在服务器上产生 404,但通过 htaccess 验证器
- r - 如何在 dplyr 过滤器中使用对象?
- android-studio - Android Studio Palette 激活但不工作
- package - MSIX 错误的 WPF 打包程序:RuntimeIdentifier 或 SelfContained
- java - Cucumber 为每个场景实例化每个 Java 类