2012-03-01 11 views
15

¿Cómo puedo probar para ver si la siguiente consulta se ejecutó correctamente?¿Cómo saber cuándo la consulta se ejecutó correctamente en PHP PDO?

$STH = $this->_db->prepare("UPDATE UserCreds SET 
    VerificationString=:newVerificationString, ExpiryDate=:expiryDate 
    WHERE UserID = :userID;"); 
$STH->execute($params); 

Sé que puedo utilizar lastInsertId() cuando estoy añadiendo nuevas filas, pero ¿qué pasa con las actualizaciones y SELECTs?

+0

@Pekka No, puedo conseguir los mensajes de error muy bien. –

+4

http://de.php.net/manual/en/pdostatement.execute.php dice: * Devuelve TRUE en caso de éxito o FALSE en caso de error. * - Por lo tanto, agréguelo a una variable, p. '$ success = $ STH-> execute ($ params);' y verifica esa variable contra 'true' o' false'. – Quasdunk

Respuesta

35

execute devuelve true en caso de éxito y false en caso de error.

From Docs:

Devuelve TRUE en caso de éxito en caso de fallo.


Así puede asegurarse de consultas se quedó con éxito como:

if ($STH->execute($params)) 
{ 
    // success 
} 
else 
{ 
    // failure 
} 
+0

Entonces algo así como 'if ($ STH-> execute ($ params)) {echo" Success! "; } else {echo "¡Error!"; } '? –

+0

@DjangoReinhardt: Sí, tiene razón :) También puede almacenar el resultado de 'execute' en una variable si necesita usarlo más tarde. – Sarfraz

+0

¡Gracias por la aclaración! –

15

ejecutar() devuelve verdadero/falso basado en el éxito/fracaso de la consulta:

$status = $STH->execute($params); 

if ($status) { 
    echo 'It worked!'; 
} else { 
    echo 'It failed!'; 
} 

Uno nota: una consulta de selección que no devuelve filas NO es un error. Es un resultado perfectamente válido que simplemente NO tiene resultados.

+3

+1 ¡Nota útil, gracias! –

-3

Esta es la mejor manera de verificar el éxito Doctrina de resultados de consulta de retorno o fallidos resultado y misma manera que por encima de sugerir para comprobar consulta tiempo vuelve El éxito de la verdadera y Error en falso.

public static function removeStudent($teacher_id){ 
     $q = Doctrine_Query::create() 
      ->delete('Student s') 
      ->where('s.teacher_id = ?'); 

     $result = $q->execute(array($teacher_id)); 

     if($result) 
     { 
     echo "success"; 
     }else{ 
     echo "failed"; 
     } 
    } 
1

simplemente puedo contar el número de fila efectuada:

$stmt->execute(); 
$count = $stmt->rowCount(); 

if($count =='0'){ 
    echo "Failed !"; 
} 
else{ 
    echo "Success !"; 
} 
+0

Esto solo funciona cuando se usa UPDATE –

+0

si esto es para ACTUALIZAR, mire la consulta que pregunta, se ve UPDATE –

+1

La pregunta especifica: "¿Qué pasa con las ACTUALIZACIONES y los SELECT?" –

Cuestiones relacionadas