(PHP 5 >= 5.1.0, PHP 7, PHP 8)
PDOException::getCode — Récupère le code d'erreur SQLSTATE
Retourne le code de l'exception. Il s'agit de la méthode héritée Exception::getCode() mais, contrairement à la plupart des autres exceptions, le code est généralement une string.
Cette fonction ne contient aucun paramètre.
Retourne le SQLSTATE sous la forme d'une
string de cinq caractères (par exemple "42S02"
ou "HY000"), voir PDO::errorCode().
Si la connexion échoue dans PDO::__construct(),
retourne à la place le code d'erreur spécifique au pilote sous la forme d'un
int (par exemple 1045 pour un accès refusé
avec MySQL).
Le paramètre code de
Exception::__construct() n'accepte qu'un
int : passer cette valeur à ce constructeur, lors de la
relance de l'erreur sous la forme d'une autre exception, lève donc une
TypeError.
La convertir en int fait perdre de l'information
("HY000" devient 0).
Il faut plutôt passer l'exception d'origine comme paramètre
previous.
Exemple #1 Exemple avec PDOException::getCode()
<?php
$pdo = new PDO('sqlite::memory:');
try {
$pdo->query('SELECT * FROM missing_table');
} catch (PDOException $e) {
var_dump($e->getCode());
}
?>L'exemple ci-dessus va afficher :
string(5) "HY000"
Exemple #2 Relancer une PDOException
<?php
class DatabaseException extends RuntimeException {}
$pdo = new PDO('sqlite::memory:');
try {
try {
$pdo->query('SELECT * FROM missing_table');
} catch (PDOException $e) {
// Passer $e->getCode() comme code lèverait une TypeError
throw new DatabaseException('La requête a échoué', previous: $e);
}
} catch (DatabaseException $e) {
echo $e->getMessage(), ' : ', $e->getPrevious()->getCode(), "\n";
}
?>L'exemple ci-dessus va afficher :
La requête a échoué : HY000