You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加UNIQUE CONSTRAINT后INSERT遇重复报错,如何忽略重复继续插入?

解决方案

可以直接修改INSERT语句实现需求,无需提前执行SELECT判断重复,MySQL提供了两种适配场景的语法:

1. 直接忽略重复记录(匹配你的需求)

将原INSERT语句改为INSERT IGNORE,当检测到user+email的唯一键组合重复时,该条记录会被自动跳过,不会抛出中断代码的错误,后续插入操作正常执行。

修改后的语句示例:

INSERT IGNORE INTO t1 (`user`, `email`) 
VALUES ('".$row['user']."', '".$email."')

2. 重复时执行更新操作(可选扩展)

如果后续需要在遇到重复记录时更新现有数据而非忽略,可以使用ON DUPLICATE KEY UPDATE语法,示例如下(以更新email字段为例,可按需调整):

INSERT INTO t1 (`user`, `email`) 
VALUES ('".$row['user']."', '".$email."')
ON DUPLICATE KEY UPDATE `email` = VALUES(`email`)

重要提示

你当前直接拼接变量生成SQL的写法存在严重SQL注入风险,建议改用预处理语句(比如PHP的PDO预处理、mysqli预处理)绑定参数,避免安全漏洞。

内容的提问来源于stack exchange,提问作者santa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:12:01