处理具有相同错误号的mysql错误

fkaflof6  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(272)

我有个问题。
我需要处理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(... );
}

但我不知道为什么,我觉得这有点垃圾。有人有其他解决办法吗?

zkure5ic

zkure5ic1#

把钥匙放好 if 内部声明 case . 您不需要重复错误号测试。

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

相关问题