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

I've a question.
I need to handle the Mysql error (like duplicate key, foreign constraints...) for example:

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

Here i use error number to select the right Exception.
But for the same error, what i've to do? I think to use error string, for example:

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

But i don't know why, i think it's a little bit trash. Does anyone have other solutions?

Put the if statement inside the case. You don't need to repeat the error number test.

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