php - MySQL - 忽略插入错误 : duplicate entry

标签 php mysql insert

我正在使用 PHP。

请问将新记录插入具有唯一字段的数据库的正确方法是什么。 我正在批量插入大量记录,我只想插入新记录,我不希望重复条目出现任何错误。

是否有唯一的方法首先进行 SELECT 并查看该条目是否在 INSERT 之前已经存在 - 并且仅在 SELECT 没有返回记录时才进行 INSERT?我希望不会。

我想以某种方式告诉 MySQL 忽略这些插入而不会出现任何错误。

谢谢

最佳答案

您可以使用 INSERT... IGNORE如果您不想在有重复记录时采取任何操作的语法。

您可以使用 REPLACE INTO如果您想用具有相同键的新记录覆盖旧记录,请使用语法。

或者,您可以使用 INSERT... ON DUPLICATE KEY UPDATE如果您想在遇到重复记录时对记录执行更新,请使用语法。

编辑:我想我会添加一些例子。

示例

假设您有一个名为 tbl 的表,其中包含两列 idvalue。有一个条目,id=1 和 value=1。如果您运行以下语句:

REPLACE INTO tbl VALUES(1,50);

您还有一条记录,id=1 value=50。请注意,整个记录首先被删除,然后重新插入。那么:

INSERT IGNORE INTO tbl VALUES (1,10);

操作成功执行,但没有插入任何内容。你仍然有 id=1 和 value=50。最后:

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

您现在有一条 id=1 和 value=200 的记录。

关于php - MySQL - 忽略插入错误 : duplicate entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812437/

相关文章:

php - SF2 中的 INNER JOIN 与 Doctrine "createQueryBuilder"

mysql - 数据库允许来自 Rails Fixtures 的错误外键

mysql - 包含 Null 值的最大记录作为最大记录

mysql - SQL 插入 : skip values allready present

php - 我应该使用 php 还是我的 sql 将数据插入表中

php - PHP 登录时向用户发送电子邮件通知

php - 如何检查日期是否为 j-n-Y 格式?如果是的话如何将其转换为 d-m-Y 格式?

php - 从另一个页面打开 Modal Laravel

php - 如何解析select mysql查询得到的Json数据?

database - 显示所有可能性? (是或否)