能否将MySQL UNIQUE字段重复报错作为PHP if语句的判断条件?
回答
是可以的,但更推荐通过MySQL返回的错误码做判断,而非直接匹配错误信息文本,避免多语言环境下错误提示翻译导致匹配失败的问题。
MySQL触发唯一约束重复的固定错误码为1062,你可以通过MySQLi的$conn->errno属性获取到该错误码,修改后的代码示例如下:
// 补全完整的INSERT语句,你原写法缺少VALUES部分 $s = "INSERT INTO `table`(`entry`) VALUES ('待插入的内容')"; if ($conn->query($s) === TRUE) { echo "新记录创建成功"; } else { if ($conn->errno === 1062) { // 唯一约束重复的专属逻辑 echo "插入失败:当前内容已存在"; } else { // 其他错误的处理逻辑 echo "错误:" . $s . "<br>" . $conn->error; } }
额外说明
- 如果你表中存在多个UNIQUE约束,需要区分是哪个字段重复的话,可以再配合对
$conn->error的字符串匹配,提取错误信息里的key名称做判断 - 尽量不要单独依赖错误信息字符串做判断,部分自定义配置的MySQL服务端会将错误提示改为中文或其他语言,会导致
Duplicate entry的匹配完全失效
内容的提问来源于stack exchange,提问作者Saeed Eisakhani
相关产品推荐
相关产品推荐

