PDOException::getCode

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

PDOException::getCode — Récupère le code d'erreur SQLSTATE

Description

final public function PDOException::getCode(): int|string

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.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

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).

Attention

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.

Exemples

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

Voir aussi

+add a note

User Contributed Notes

There are no user contributed notes for this page.