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

PHP实现Email已存在时不插入数据的问题求助

解决MySQL重复插入问题的方案

首先,你的ON DUPLICATE KEY UPDATE语句未生效的核心原因是**phone_number字段没有设置唯一约束**。MySQL的这个语法仅在插入行触发唯一键(主键或UNIQUE索引)冲突时才会执行更新操作,没有约束的话数据库无法识别“重复”数据。

步骤1:给字段添加唯一约束

先为employee表的phone_number字段添加UNIQUE索引,执行以下SQL:

ALTER TABLE employee ADD UNIQUE INDEX idx_phone_number (phone_number);

步骤2:修正插入语句并规避SQL注入风险

你当前直接将变量拼接进SQL的写法存在严重的SQL注入隐患,必须改用预处理语句。以下是两种常见PHP扩展的正确写法:

PDO写法

// 假设已建立PDO连接$pdo
$sql = "INSERT INTO employee (phone_number) VALUES (:search) ON DUPLICATE KEY UPDATE phone_number = :search";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':search', $search);
$stmt->execute();

mysqli写法

// 假设已建立mysqli连接$conn
$sql = "INSERT INTO employee (phone_number) VALUES (?) ON DUPLICATE KEY UPDATE phone_number = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $search);
$stmt->execute();

替代方案:仅忽略重复插入

如果不需要执行更新操作,只想跳过重复数据,可使用INSERT IGNORE(同样依赖唯一约束):

INSERT IGNORE INTO employee (phone_number) VALUES (:search);

注意:无论使用哪种语法,都必须用预处理语句避免SQL注入,禁止直接拼接变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:35:29