Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Problemas mostrando errores TRY-CATCH

Estas en el tema de Problemas mostrando errores TRY-CATCH en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy utilizando la clase que creo Rivermillos para realizar un insert a mi base de datos. Esta me funciona bien, pero estoy causando un error ...
  #1 (permalink)  
Antiguo 12/04/2011, 15:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Problemas mostrando errores TRY-CATCH

Estoy utilizando la clase que creo Rivermillos para realizar un insert a mi base de datos.

Esta me funciona bien, pero estoy causando un error a propósito, para que me muestre que el INSERT que quiero hacer no se puede porque hay un campo duplicado.

este es el codigo:
Código PHP:
Ver original
  1. try{
  2. $array = array("Ble", "1");
  3.  
  4. $resultado=$conn->prepare("INSERT INTO tbl_dpto (dpto_nombre, dpto_estado) VALUES (?, ?)");
  5. $res1=$conn->execute($array);
  6. }catch(Exception $e){
  7.     echo "error: ".$e->getMessage();
  8. }

Tambien intente con:
Código PHP:
Ver original
  1. try{
  2. $array = array("Ble", "1");
  3.  
  4. $resultado=$conn->prepare("INSERT INTO tbl_dpto (dpto_nombre, dpto_estado) VALUES (?, ?)");
  5. $res1=$conn->execute($array);
  6. }catch(PDOException $e){
  7.     echo "error: ".$e;
  8. }

Pero lo unico que obtengo es esto cuando causo un error a proposito:

Fatal error: Call to a member function prepare() on a non-object in D:\AppServ\www\pruebas\clsCnxBD.php on line

O por ejemplo cambio a proposito la contraseña del usuario root a cualquier cosa para que me diga que no se pudo conectar por que no tiene acceso y me saca un error parecido

Alguien me puede dar un ejemplo de como mostrar esos errores por favor y que no me muestre FATAL ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 12/04/2011, 15:56
 
Fecha de Ingreso: marzo-2011
Ubicación: Veracruz
Mensajes: 92
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: Problemas mostrando errores TRY-CATCH

con mysql_error() ?
  #3 (permalink)  
Antiguo 12/04/2011, 16:17
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Problemas mostrando errores TRY-CATCH

Amigo eso es PDO no creo que eso me funcione... de todas maneras gracias por la respuesta...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 12/04/2011, 16:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problemas mostrando errores TRY-CATCH

jotaincubus, yo estoy haciendo mis primeros pasos en PDO y tambien quise probar esta parte; no se si haya que configurar algo, pero, PDO no genera una excepcion cuando la consulta esta mal, lo que hace es devolver el recurso como falso, de manera que tienes que generar tu esa excepcion:

Código PHP:
Ver original
  1. $array = array("Ble", "1");
  2. $resultado=$conn->prepare("INSERT INTO tbl_dpto (dpto_nombre, dpto_estado) VALUES (?, ?)");
  3. $resultado->execute($array) or throw new Exception ('Error en la consulta: ' . implode(', ', $resultado->errorInfo());
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 12/04/2011, 16:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Problemas mostrando errores TRY-CATCH

Buenas,

@jotaincubus y @Triby, por defecto PDO trabaja en ERRMODE_SILENT, pero se puede configurar para que lance las excepciones, es mas, es una de las razones por la que los FW's extienden PDO, para setearlo de forma automática, algo así:

Código PHP:
Ver original
  1. class PDOConnection extends PDO
  2. {
  3.     public function __construct($dsn, $user = null, $password = null, array $options = null)
  4.     {
  5.         parent::__construct($dsn, $user, $password, $options);
  6.         $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  7.     }
  8. }
  9.  
  10. $conn = new PDOConnection('mysql:dbname=mydb', 'username', 'passwd');
  11.  
  12. try {
  13.     $stmt = $conn->prepare('SELECT * FROM non-existent-table');
  14.     $stmt->execute();
  15. } catch (PDOException $e) {
  16.     print_r($e);
  17. }

también pueden setear los atributos después de instanciar PDO o directamente en el constructor, algo así:

Código PHP:
Ver original
  1. $pdo = new PDO('mysql:dbname=mydb', 'username', 'passwd', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 12/04/2011, 17:20
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Problemas mostrando errores TRY-CATCH

OMG muchisimas gracias, funciono de lujo.

Es muy bueno que expliquen esto ya que busque por todos lados y nadie explicaba como hacerlo.

Muchas gracias
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: catch, errores, mysql, pdo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.