Foros del Web » Programando para Internet » PHP »

PDO no me genera errores de sintaxis SQL

Estas en el tema de PDO no me genera errores de sintaxis SQL en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/12/2012, 01:06
 
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.
  #2 (permalink)  
Antiguo 05/12/2012, 01:33
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: PDO no me genera errores de sintaxis SQL

Me respondo a mi mismo...

Ya está resuelto. Después de varios días peleando con el código, ahora recién levantado por la mañana y con la cabeza más fresca, veo que era un error mío, en realidad no tenía puesta la línea:

Código PHP:
$this->conexion_db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION); 
ya que el valor por defecto es:
Código PHP:
PDO::ERRMODE_SILENT 
Bueno, pues que sirva como ejemplo para los demás.

Saludos. Pakoff

Etiquetas: errores, genera, mysql, pdo, registro, sintaxis, sql, tabla, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:14.