【发布时间】:2012-02-08 20:31:53
【问题描述】:
很抱歉,如果以前有人问过这个问题,但我有一段时间找不到答案。
问题在于尝试在具有多个唯一键的 MySQL 表中插入一行时。如果我们参考下表:
----------------------------------------
| id | username | email |
----------------------------------------
| 1 | myuser | test@test.com |
----------------------------------------
username 和 email 都是唯一键。如果我运行查询以插入带有 username = 'myuser' 的新行,我将收到重复条目的 1062 错误,并且消息中的一些文本表明 id 为 3 的键是重复的。像这样的:
array(3) {
[0]=>
string(5) "23000"
[1]=>
int(1062)
[2]=>
string(34) "Duplicate entry 'myuser' for key 3"
}
在 PDO 中有没有办法获取重复列的名称,以便我可以向用户显示由于此错误而需要更改的字段?
因为情况是两个字段都可以重复,或者只是第一个/第二个字段,我需要告诉用户究竟是哪个字段。
我想解析短信并硬编码密钥的 ID,但明天有人可以更改数据库中的密钥、删除密钥或添加新密钥,而密钥编号似乎不是可靠的来源信息。
或者也许最好的选择是在插入之前选择所有作为键的值来检查它们?
谢谢!
【问题讨论】:
-
那个错误信息是真的吗?我发现“for key 3”部分有点奇怪,因为它应该说用户名......我想。
标签: php insert pdo duplicates