将忽略插入 - 但哪一列是原因


INSERT IGNORE INTO - but what column is the cause?

'插入忽略',我将如何获得导致忽略的列(设置为"唯一"/"主要"的列)?

用法示例,我将用户插入表中,如果已经插入用户名或电子邮件,它不会插入 - 我想知道是否已经插入了电子邮件或用户名(或两者),以便我可以通过 javascript 在屏幕上打印错误消息。

当然,你可能会建议我事先使用SELECT。但是,通过这样做,我必须运行 2 个额外的查询 - 我试图保持脚本尽可能干净/快速。

我知道 mysql_affected_rows() 可以告诉我它是否已插入,但它不会返回从这样做中引入它的列。

我想我可以使用mysql_error什么的?我不确定,因为mysql_error只显示在错误上 - 因为我使用"IGNORE",它不会缓冲错误。


如果我解析mysql_error或其他东西,@mysql_query("插入...")会起作用吗?

查询后,可以执行SHOW WARNINGS以查看有关重复键的信息。

您可以在此问题的答案中找到PHP代码处理MySQL警告的示例:我可以使用PHP检测和处理MySQL警告吗?