web-dev-qa-db-fra.com

Comment savoir quand la requête a été exécutée avec succès dans PHP PDO?

Comment puis-je tester pour voir si la requête suivante s'est exécutée avec succès?

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

Je sais que je peux utiliser lastInsertId() lorsque j'ajoute de nouvelles lignes, mais qu'en est-il des MISES À JOUR et des SÉLECTION?

20
Chuck Le Butt

execute renvoie true en cas de succès et false en cas d'échec.

De Docs:

Retourne TRUE en cas de succès ou FALSE en cas d'échec.


Ainsi, vous pouvez vous assurer que la requête s'est déroulée correctement, comme:

if ($STH->execute($params))
{
  // success
}
else
{
  // failure
}
38
Sarfraz

execute () retourne vrai/faux en fonction du succès/échec de la requête:

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

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

Une remarque: une requête de sélection qui ne renvoie aucune ligne n'est PAS un échec. C'est un résultat parfaitement valide qui se trouve n'avoir aucun résultat.

16
Marc B

je peux simplement compter le nombre de lignes affectées:

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

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