Ver Mensaje Individual
  #48 (permalink)  
Antiguo 02/09/2010, 14:54
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 9 meses
Puntos: 20
Respuesta: Duda con PDO y mi clase

Cita:
Iniciado por GatorV Ver Mensaje
Donde implementes me refiero a donde estes usando las clases, por ejemplo:
Código PHP:
Ver original
  1. try {
  2.         $cat= new Categoria();
  3.         $cat->listarCategorias($db_slave); // Leo de la BBDD slave
  4.         $cat->listarPartidos($db_master); // Ejemplo leyendo de otra BBDD master
  5. } catch (PDOException $pe) {
  6.         echo $pe->getMessage();
  7. }

Así puedes controlar mucho mejor el flujo si se ocasiona algún problema o cachar diferentes tipos de excepciones.

Saludos.
Lo he añadido donde me comentas pero es como si no hiciese caso, ya que el mensaje de error que muestra no el "correcto".

Código PHP:
Ver original
  1. try {
  2.     // Creo el primer objeto el cual hace una conexion con la BBDD slave
  3.     $cat= new Categoria($db_slave);
  4.     $cat->listarCategorias(); // Leo de la BBDD slave
  5. } catch(PDOException $e){
  6.     echo $e->getMessage();
  7.     echo "Hubo un error";
  8. }

He modificado el nombre de la base de datos en el fichero de .ini por uno que no existe y me produce el siguiente error:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1049] Unknown database 'code3lab'' in C:\wamp\www\00-laboratorio_test\secciones\class_categorias\Nueva\ ConectarCon2_BD_version2\MyPDO.class.php:25 Stack trace: #0 C:\wamp\www\00-laboratorio_test\secciones\class_categorias\Nueva\ ConectarCon2_BD_version2\MyPDO.class.php(25): PDO->__construct('mysql:host=loca...', 'root', 'jupiter') #1 C:\wamp\www\00-laboratorio_test\secciones\class_categorias\Nueva\ ConectarCon2_BD_version2\ejemplo1.php(59): MyPDO->__construct(Object(Config)) #2 {main} thrown in C:\wamp\www\00-laboratorio_test\secciones\class_categorias\Nueva\ ConectarCon2_BD_version2\MyPDO.class.php on line 25

La linea 25 hace de la clase MyPDO.class.php hace referencia a aquí

parent::__construct($this->_dsn, $this->_username, $this->_password);

¿Por qué no captura correctamente la excepción?
Ademas tengo puesto justo despues de la creación de los objetos de base de datos el setAttribute, por lo que el error tb debería ser diferente no?

$db_slave = new MyPDO($config_slave);
$db_slave->setAttribute(MyPDO::ATTR_ERRMODE, MyPDO::ERRMODE_EXCEPTION);
$db_master = new MyPDO($config_master);
$db_master->setAttribute(MyPDO::ATTR_ERRMODE, MyPDO::ERRMODE_EXCEPTION);

¿Sabes por qué?