Php 将忽略插入-但原因是什么列?

Php 将忽略插入-但原因是什么列?,php,mysql,sql,Php,Mysql,Sql,“将忽略插入”,如何获取导致忽略的列(设置为“唯一”/“主要”的列) 例如,我在表中插入用户,如果用户名或电子邮件已经插入,它将不会插入-我想知道是电子邮件还是用户名(或两者)已经插入,这样我就可以通过javascript在屏幕上打印错误消息 当然,你们可以建议我事先使用SELECT。但是,通过这样做,我将不得不运行另外两个查询-我试图保持脚本尽可能干净/快速 我知道mysql\u infected\u rows()可以告诉我是否插入了,但它不会返回阻止它这样做的列 我想我可以使用mysql\u

“将忽略插入”,如何获取导致忽略的列(设置为“唯一”/“主要”的列)

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

当然,你们可以建议我事先使用SELECT。但是,通过这样做,我将不得不运行另外两个查询-我试图保持脚本尽可能干净/快速

我知道mysql\u infected\u rows()可以告诉我是否插入了,但它不会返回阻止它这样做的列

我想我可以使用mysql\u错误或其他什么?我不确定,因为mysql\u错误只显示在错误上-因为我使用“忽略”它不会缓冲错误



如果我解析了mysql\u错误或其他什么,@mysql\u query('INSERT-INTO…')会起作用吗?

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


您可以在这个问题的答案中找到处理MySQL警告的PHP代码示例:

谢谢,但它没有给我任何“唯一列”错误。我将尝试关闭“忽略”。是的,当我关闭“忽略”时它会起作用。但是,它给了我“键2的重复条目‘测试’”。有没有办法让它告诉我它是什么列,或者我应该只使用if($key='2')?嗯,我认为没有办法让它显示键的名称。