这有点类似于以下问题:
由于唯一约束,PHP MySQL INSERT失败
但我有一个不同的转折。假设我有一个只有一列的表。该列的名称为“标题”,并且具有唯一的约束。
首先,我在title =“ something”处插入一行。下次我尝试插入“某物”时,它将由于唯一的键约束而失败(很好)。我想做的是让它失败,并检查mysql提供的错误代码,以确保由于唯一键约束而失败。(即,让数据库处理唯一性,而我只处理错误代码,并在结果返回时告诉用户标题已经存在)。
有没有办法做到这一点?
http://dev.mysql.com/doc/refman/5.5/zh-CN/error-messages- server.html
http://php.net/manual/zh/function.mysql- errno.php
过去我不得不这样做,这很不好玩:
if( mysql_errno() == 1062) { // Duplicate key } else { // ZOMGFAILURE }
在编程风格的注意事项 (现金到jensgram从这个答案) 你应该总是设法避免使用幻数。相反,您可以将已知的错误代码(1062)分配给常量(例如MYSQL_CODE_DUPLICATE_KEY)。这将使您的代码更易于维护,因为if当1062内存中的含义消失了几个月后,语句中的条件仍然可读:
1062
MYSQL_CODE_DUPLICATE_KEY
if