Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2012, 01:06
Pakoff
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 2
PDO no me genera errores de sintaxis SQL

Saludos a la comunidad!!!

Aunque leo este foro desde hace tiempo, normalmente las dudas las resuelvo siempre mediante los buscadores, pero esta vez...

Normalmente los problemas que se suelen tener es que nuestro código genera errores que no sabemos solucionar, pero en este caso es lo contrario, quiero generar un error y php no lo hace.

Estoy empezando a usar la libreria PDO para trabajar con Mysql y me gusta capturar la mayor cantidad posible de errores para que la aplicación no los muestre al usuario. Y con la librería PDO los errores de sintaxis del lenguaje SQL no disparan errores. Mirad este código:

Código PHP:
        try {
            
$this->conexion_db=new PDO("mysql:host=$host;dbname=$database""$user""$pass");
            
$this->conexion_db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERYTRUE);
            
$this->conexion_db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        } catch (
PDOException $e) {
            echo(
"<p>Imposible conectar con host: $host.</p>");
            print 
"<p>Error: " $e->getMessage() . "</p>\n";
            die(
'Anote este mensaje y avise al administrador del sistema.');
        } 
Esta parte del código funciona bien. He comprobado que si no está disponible la BBDD o existen errores de autenticación me dispara una excepción.

Sin embargo aquí:


Código PHP:
        $sql="ASELECT * FROM vuelos WHERE nif_certificador = :nif AND YEAR(fecha_despegue) = :anyo;"
        
        
$this->ConectarDB_PDO();
        
$this->conexion_db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        try{
            
$result $this->conexion_db->prepare($sql);
            
$result->execute(array(":nif" => $nif":anyo" => $anyo));
            foreach( 
$result as $r){
                
$x[$i]=$r;
                
$i++;
            }
        } catch (
PDOException $e) {
            echo(
"<p>Error. No se puede continuar.</p>");
            print 
"<p>Error: " $e->getMessage() . "</p>\n";
            die(
'Anote este mensaje y avise al administrador del sistema.');
        } 
en lugar de teclear SELECT he añadido un error (ASELECT) para que me dispare el error y el código funciona bien sin errores, solo que no me devuelve ningún registro de la tabla. Incluso si cambio el nombre de la tabla por una que no existen tampoco me genera erores...

¿Alguna sugerencia?

Saludos, Pakoff.