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): arrayLe 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é parmysqli_connect()(oumysqli_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é | Type | Description |
|---|---|---|
errno | int | Le numéro d'erreur MySQL (par ex. 1146 pour « la table n'existe pas »). |
sqlstate | string | Le code d'erreur SQLSTATE en cinq caractères (par ex. 42S02). |
error | string | Le 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 avecerrno,sqlstateeterror. 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
falseninull; utilisez doncif (!$result)(ou vérifiezmysqli_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.