这有点类似于这个问题:
但我有一个不同的转折.假设我有一个只有一列的表格.列的名称是"title",它有一个唯一的约束.
首先,我插入一行title ="something".下次我尝试插入"某事"时,由于唯一的键约束(这很好),它将失败.我想做的是让它失败,并检查mysql提供的错误代码,以确保它由于唯一的键约束而失败.(即让数据库处理唯一性,我只是处理错误代码并在结果返回时告诉用户标题已经存在).
有没有办法做到这一点?
Ben*_*son 18
现在是2015年,没有理由不使用PHP的PDO实现:
http://php.net/manual/en/book.pdo.php
用于检测和处理由于键约束违反而导致的插入失败的适当的现代"OO"方法如下:
try {
//PDO query execution goes here.
}
catch (\PDOException $e) {
if ($e->errorInfo[1] == 1062) {
//The INSERT query failed due to a key constraint violation.
}
}
Run Code Online (Sandbox Code Playgroud)
PDOException对象还有很多关于错误的特定性质的说法(似乎比一个人可能想要或需要的更多细节).
小智 12
http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
http://php.net/manual/en/function.mysql-errno.php
我过去不得不这样做,这并不好玩:
if( mysql_errno() == 1062) {
// Duplicate key
} else {
// ZOMGFAILURE
}
Run Code Online (Sandbox Code Playgroud)
关于编程风格的注释(从这个答案中可以看出jensgram)
你应该总是设法避免使用魔术数字.相反,您可以将已知错误代码()分配给常量(例如).这将使您的代码更容易维护,因为语句中的条件在几个月内仍然可读,而其含义已从内存中消失:)1062MYSQL_CODE_DUPLICATE_KEYif1062
| 归档时间: |
|
| 查看次数: |
18641 次 |
| 最近记录: |