php - 处理具有相同错误号的 Mysql 错误

标签 php mysql error-handling

我有一个问题。
我需要处理 Mysql 错误(如重复键、外部约束...),例如:

$id=$db->insert ('user', $data);
if(!$id){
    switch($db->getLastErrno()){
        throw new Exception(... );
    }
}

这里我使用错误号来选择正确的异常。
但对于同样的错误,我该怎么办? 我想使用错误字符串,例如:

if($db->getLastErrno()==1452 && strpos($db->getLastError(), "contraint name created on db")>-1){
    throw new Exception(... );
}

但不知道为什么,我觉得这有点垃圾。还有其他解决方案吗?

最佳答案

if 语句放入 case 内。您无需重复错误号测试。

switch ($db->getLastErrno()) {
    case 1452:
        if (strpos($db->getLastError(), "constraint name created on db") !== false) {
            throw new Exception(...);
        }
        break;
    ...
}

关于php - 处理具有相同错误号的 Mysql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365938/

相关文章:

php - Laravel Text 不显示 True/False,而是 0/1

PHP Codeigniter : set Port Number for MySQL Configuration

MySQL:如果值发生变化,则从计数中删除

bash - 避免在if bash时if语句引发错误的语句

php - 如何在 CodeIgniter 中组合 query() 和 limit() 方法

php - 服务器能否在用户不知情的情况下将更改通知 iOS/Android 应用程序?

php - 按字母顺序打印数据库结果

c# - 想要使用一种方法从foreach返回列表并返回所有项目,但是我得到: (collection)

swift - do - try - catch 代码不尝试或捕获。只是做

php - 2 总和 php