2011-05-14 7 views
6

Me gustaría saber cómo puedo lidiar exactamente con las declaraciones del error devuelto por los controladores DataBase disponibles en la clase PDO.Tratar con la excepción PDOException cuando la DB devuelve una declaración de error

Como ejemplo, tomemos los campos UNIQUE como caso de estudio.

Como debe saber, al menos cuando el modo de depuración de PDO está activo, cuando intentamos agregar algo duplicado en el campo UNIQUE de una base de datos, recibimos una excepción PDOException.

Y me gustaría saber cuál es la forma correcta de manejar esto. He buscado en ello y lo he entendido:

try { 

    // PDO::prepare(), PDOStatement::execute e etc. 

} catch(PDOException $e) { 

    if($e -> getCode() == 23000) { 
     // Do something 
    } 
} 

Pero no estoy seguro de si es correcto y, pensando como programador, es realmente una buena práctica? Es decir, ¿confía en el Código de error?

Peor aún: PDO acepta varios controladores, ¿todos comparten el mismo código de error?

Por supuesto, este no es el único caso. Hay varios otros códigos de error, ¿verdad? Esta "técnica" se puede usar en todas las circunstancias?

Respuesta

3

Después de mirar http://php.net/manual/en/class.pdoexception.php, tengo la sensación de que podría necesitar confiar en $e->getMessage() para descubrir cuál fue el error.

Leyendo a través de una de las publicaciones provided, puede que necesite extraer el código de error correcto del mensaje.

PDO parece haber sido programado de una manera bastante extraña! ¡Pero sigue siendo bastante valioso cuando se trata de múltiples tipos de bases de datos!

+0

Creo que es más seguro consultar los resultados existentes y luego verificar si está presente o no. –

Cuestiones relacionadas