Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2010, 10:49
siguevivo
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Try, Catch y PDO

Hola soy nuevo trabajando con la clase PDO y el try and catch. Me surgieron un par de dudas...
Que tipo de errores son los que hacen saltar a la exepcion?? porque por los visto los de codigo no y los errores en la consulta tampoco es decir si quiero insertar un caracter en un Id de una tabla que acepte solo enteros no me lo esta capturando.

Y en este caso se que esta bien usar PDOException para capturar las exepcion de esta clase, pero si quiero capturar todo tipo de exepxion uso Exception

Aca les dejo mi codigo por si estoy obviando algo o por si tiene errores, tengo una clase Padre DATAMODEL y luego las otras son extends de esa CLASE les dejo como ejemplo parte del codigo de MODELUSUARIO

CLASE DATAMODEL (PADRE de las demas)
Código:
<?php
abstract class DataModel{
	protected $SERVIDOR = "XXXX";
	protected $USUARIO = "XXXX";
	protected $CLAVE = "XXXX";
	protected $BASE = "XXXX";
	
	function conectarse(){
	    try{
			$db = new PDO("mysql:host=$this->SERVIDOR;dbname=sitio", $this->USUARIO, $this->CLAVE); 
			return $db;
			echo "todo OK";
		}catch(PDOException $e){
			echo 'todo mal';
	    }
	}
	
	function desconectar($db){
		$db=null;
		return $db;
	}
}
?>
CLASE MANEJA los USUARIOS
Código:
<?php

class ModelUsuario extends DataModel{
	
	function __construct(){
	}
	
	// //
	function guardarUsuario(Usuario $unCandidato){
		
		$db= $this->conectarse();
		try{
			$consulta = $db->prepare("INSERT INTO usuario (Nombre, Apellido) VALUES (:nombre,:apellido);");
			
			$consulta->bindParam(':nombre', $unCandidato->getNombre());
			$consulta->bindParam(':apellido', $unCandidato->getApellido());
			
			try{
				$consulta->execute();
				$consulta=null;
				echo 'todo ok';
			}catch(PDOException $e){
				echo 'Error';
			}
		}catch(PDOException $e){
			echo $e->getMessage();
			echo 'error';
		}
			
		
		$this->desconectar($db);			
	}
	
	// //
	function eliminarUsuario($unUsuarioID){
		$db=$this->conectarse();
		try{
			$consulta = $db->prepare("DELETE FROM sitio.usuarios WHERE IdUsuario =:unUsuarioID");
			$consulta->bindParam(':unUsuarioID', $unUsuarioID);
			$consulta->execute();
			$consulta=null;
			echo "todo OK";
			
		}catch(PDOException $e){
			echo $e->getMessage();
			echo "todo MAL";
			

		}
		$this->desconectar($db);
	}
	
}
?>
ACLARACION: es solo parte del codigo asi que quizas tenga algun error tonto, pero el codigo funciona.
Bueno espero que alguien me pueda guiar sobre el tema porque todo lo que leo en internet lo hacen asi o muy parecido.... pero no obtengo el resultado esperado.


Saludos y desde ya muchas gracias.