W3docs

error_list

Découvrez la fonction mysqli_error_list() en PHP pour obtenir un array d'erreurs survenues lors du dernier appel MySQLi.

La fonction mysqli_error_list() retourne un array des erreurs générées par l'appel de fonction MySQLi le plus récent sur une connexion donnée. Contrairement à mysqli_error(), qui ne renvoie que le dernier message d'erreur sous forme de string, mysqli_error_list() retourne toutes les erreurs de cette opération — chacune sous la forme d'un array associatif contenant le numéro d'erreur, le code SQLSTATE et le message lisible par l'humain. Cette page explique la syntaxe, la structure des données retournées et comment les utiliser en pratique.

Syntaxe

mysqli_error_list(mysqli $mysql): array

Le style orienté objet utilise la propriété en lecture seule error_list à la place :

$mysqli->error_list;

Paramètres

  • $mysql — Un object de connexion MySQLi retourné par mysqli_connect() (ou mysqli_init() / new mysqli()).

Valeur de retour

Un array d'arrays associatifs. Le tableau est vide lorsqu'aucune erreur ne s'est produite. Chaque entrée possède trois clés :

CléTypeDescription
errnointLe numéro d'erreur MySQL (par ex. 1146 pour « la table n'existe pas »).
sqlstatestringLe code d'erreur SQLSTATE en cinq caractères (par ex. 42S02).
errorstringLe texte du message d'erreur.

Exemple de base

Vous appelez mysqli_error_list() immédiatement après l'opération que vous souhaitez inspecter — généralement lorsqu'une requête vient d'échouer :

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_list = mysqli_error_list($mysqli);
    foreach ($error_list as $error) {
        echo "Failed to execute query. Error message: " . $error['error'] . "\n";
    }
    exit();
}

mysqli_close($mysqli);
?>

Ici, nous établissons la connexion, exécutons une requête et vérifions le résultat. Si mysqli_query() retourne false, nous appelons mysqli_error_list() et parcourons le tableau retourné en affichant le message error de chaque erreur avant de quitter. Lorsque la requête réussit, la boucle ne s'exécute tout simplement pas car le tableau est vide.

Lecture du code d'erreur et du SQLSTATE

Chaque entrée étant un array associatif, vous pouvez lire le code numérique et le SQLSTATE en même temps que le message — utile pour brancher la logique sur des échecs spécifiques plutôt que d'analyser le texte du message :

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_list = mysqli_error_list($mysqli);
    foreach ($error_list as $error) {
        echo "Failed to execute query. Error message: " . $error['error'] . "\n";
        echo "Error code: " . $error['errno'] . "\n";
        echo "SQLSTATE error code: " . $error['sqlstate'] . "\n";
    }
    exit();
}

mysqli_close($mysqli);
?>

Cet exemple étend l'exemple de base en affichant le errno numérique et le code sqlstate pour chaque erreur, vous donnant ainsi le contexte de diagnostic complet.

Style orienté objet

Si vous créez la connexion avec new mysqli(), utilisez la propriété error_list :

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if (!$mysqli->query("SELECT * FROM missing_table")) {
    foreach ($mysqli->error_list as $error) {
        echo "[{$error['errno']}] {$error['sqlstate']}: {$error['error']}\n";
    }
}

$mysqli->close();
?>

mysqli_error_list() vs. fonctions associées

  • mysqli_error() — retourne uniquement le dernier message d'erreur sous forme de string. Utilisez-la lorsque vous avez besoin d'un seul message.
  • mysqli_errno() — retourne le numéro d'erreur du dernier appel.
  • mysqli_error_list() — retourne toutes les erreurs du dernier appel, chacune avec errno, sqlstate et error. Utilisez-la lorsqu'une seule opération peut exposer plusieurs problèmes.

Points d'attention

  • La liste ne reflète que l'appel MySQLi le plus récent sur cette connexion. Capturez-la immédiatement après l'opération en échec — un appel réussi ultérieur l'efface.
  • Une opération réussie retourne un array vide, pas false ni null ; utilisez donc if (!$result) (ou vérifiez mysqli_errno()) avant de supposer qu'il y a des erreurs à lire.
  • Pour les échecs de connexion, l'étape de connexion elle-même échoue avant que vous ayez un object utilisable — utilisez plutôt mysqli_connect_error() dans ce cas.

Conclusion

mysqli_error_list() vous donne un accès structuré à toutes les erreurs de la dernière opération MySQLi, avec le numéro d'erreur, le SQLSTATE et le message. Faites-y appel lorsque vous avez besoin d'un diagnostic plus riche que ce que fournit mysqli_error(). Pour une gestion plus large des erreurs PHP, consultez la gestion des erreurs PHP et la vue d'ensemble de mysqli.

Pratique

Pratique
Lesquels des éléments suivants représentent des types d'erreurs en PHP ?
Lesquels des éléments suivants représentent des types d'erreurs en PHP ?
Was this page helpful?