PHP MySQL INSERT由于唯一约束而失败

时间:2010-05-03 04:57:54

标签: php mysql unique-constraint mysql-error-1062

在插入时,我捕获了唯一约束mysql_errno()1062。

这很好但我想找到现有的行来重新设置或修改它。

是否有方法获取插入失败的行ID?我尝试了mysql_insert_id(),但意识到只返回我插入的行(或插入失败)因此,我得到0。

除了发出另一个mysql_query并且只是对重复值执行select之外,没有其他选择吗?

我只是想确保没有更好,更快,更经济的方法来做到这一点。

2 个答案:

答案 0 :(得分:2)

如果您尝试在新行或更新现有值时插入行,则REPLACE INTO就是您所需要的。如果涉及到约束,请考虑INSERT ... ON DUPLICATE KEY UPDATE Syntax,因为REPLACE INTO将删除然后插入。

答案 1 :(得分:0)

您必须检查表中是否有“唯一”键(SHOW CREATE TABLE将列出所有键),然后在表中查询您尝试过的插入查询中的关联值。因此,如果您要插入字段A,B,C,D和B,则C上有唯一键,然后:

SELECT id, B, C FROM table WHERE B=$B and C=$C;