W3docs

error

Découvrez la fonction mysqli_error() en PHP pour récupérer le message d'erreur de la dernière opération MySQLi sur une connexion donnée.

Dans cet article, nous allons nous concentrer sur la fonction mysqli_error() en PHP, qui permet de récupérer le message d'erreur du dernier appel à une fonction MySQLi. Cette page couvre la syntaxe de la fonction, ses paramètres et sa valeur de retour, présente des exemples pratiques et renvoie vers des fonctions connexes de gestion des erreurs.

Introduction à la fonction mysqli_error()

La fonction mysqli_error() est une fonction PHP intégrée qui retourne une string décrivant l'erreur survenue lors de la dernière opération MySQLi effectuée sur une connexion donnée. Si le dernier appel a réussi — ou si aucune opération n'a encore été exécutée — elle retourne une string vide ("").

Elle est nécessaire car la plupart des fonctions MySQLi (comme mysqli_query()) signalent un échec uniquement en retournant false. Cela indique que quelque chose s'est mal passé, mais pas quoi. mysqli_error() comble ce manque en vous donnant le message lisible signalé par le serveur MySQL, par exemple Table 'database.my_table' doesn't exist.

Syntaxe

mysqli_error(mysqli $mysqli): string

Paramètre

  • $mysqli (obligatoire) — Un object de connexion MySQLi retourné par mysqli_connect() (ou mysqli_init() + mysqli_real_connect()). L'erreur rapportée appartient à cette connexion spécifique.

Valeur de retour

Une string contenant la description de l'erreur pour la dernière opération sur $mysqli. Une string vide signifie qu'il n'y a eu aucune erreur. Comme une string vide est « falsy » en PHP, vous branchez généralement votre code sur le résultat de l'appel échoué (par exemple !$result) plutôt que sur mysqli_error() elle-même.

Style objet vs. style procédural. Cette page utilise le style procédural, mysqli_error($mysqli). Avec l'API orientée objet, l'équivalent est la propriété en lecture seule $mysqli->error.

Comment utiliser la fonction mysqli_error()

L'utilisation de la fonction mysqli_error() est simple. Vous l'appelez sur un object de connexion MySQLi valide. Voici un exemple :

Comment utiliser la fonction mysqli_error() ?

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

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

if (!$result) {
    $error_msg = mysqli_error($mysqli);
    echo "Failed to execute query. Error message: " . $error_msg;
    exit();
}

mysqli_close($mysqli);
?>

Dans cet exemple, nous appelons la fonction mysqli_connect() pour nous connecter à une base de données MySQL. Nous exécutons ensuite une requête à l'aide de la fonction mysqli_query() et stockons le résultat dans une variable. Nous vérifions si une erreur est survenue dans la requête grâce à la condition !$result. Si une erreur s'est produite, nous passons l'object de connexion à mysqli_error() pour récupérer le message d'erreur spécifique, l'afficher et terminer le script.

Remarque : Vérifiez toujours que mysqli_connect() retourne un object valide avant d'exécuter des requêtes. Si la connexion échoue, mysqli_query() déclenchera un avertissement PHP.

Utilisation avancée

La fonction mysqli_error() peut également être utilisée sur plusieurs connexions. Voici un exemple :

Utilisation avancée de PHP mysqli_error()

<?php
$mysqli1 = mysqli_connect("localhost", "username", "password", "database1");
$mysqli2 = mysqli_connect("localhost", "username", "password", "database2");

$query = "SELECT * FROM my_table";
$result1 = mysqli_query($mysqli1, $query);
$result2 = mysqli_query($mysqli2, $query);

if (!$result1) {
    $error_msg = mysqli_error($mysqli1);
    echo "Failed to execute query on connection 1. Error message: " . $error_msg;
    exit();
}

if (!$result2) {
    $error_msg = mysqli_error($mysqli2);
    echo "Failed to execute query on connection 2. Error message: " . $error_msg;
    exit();
}

mysqli_close($mysqli1);
mysqli_close($mysqli2);
?>

Dans cet exemple, nous établissons deux connexions séparées et exécutons la même requête sur chacune d'elles. Nous vérifions le résultat de chaque connexion de manière indépendante. Si une requête échoue, nous passons l'object de connexion correspondant à mysqli_error() pour isoler et afficher l'erreur spécifique. C'est important car mysqli_error() est limitée à la portée d'une connexion — l'appeler sur $mysqli1 ne signale jamais une erreur survenue sur $mysqli2.

Gestion moderne des erreurs avec les exceptions

Pour les nouvelles applications PHP, envisagez d'activer la gestion des erreurs par exceptions plutôt que de vérifier mysqli_error() après chaque appel. Ajoutez cette ligne avant de vous connecter :

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = mysqli_connect("localhost", "username", "password", "database");
    $result = mysqli_query($mysqli, "SELECT * FROM my_table");
} catch (mysqli_sql_exception $e) {
    echo "Database error: " . $e->getMessage();
}
?>

Avec MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT activé, une connexion ou une requête échouée lance automatiquement un object mysqli_sql_exception au lieu de retourner false. Le même message que vous auriez lu via mysqli_error() est disponible via $e->getMessage(). À partir de PHP 8.1, ce mode de rapport est celui par défaut, de sorte que la plupart du code moderne s'appuie sur try/catch plutôt que sur des vérifications manuelles.

Erreurs courantes à éviter

  • Passer la mauvaise connexion. mysqli_error() signale les erreurs pour la connexion que vous passez en argument. Passez le même $mysqli que celui utilisé pour la requête échouée.
  • L'appeler après mysqli_close(). Une fois une connexion fermée, l'object n'est plus valide et vous ne pouvez plus lire son erreur.
  • Échecs de connexion. Si mysqli_connect() elle-même échoue, elle retourne false (ou lève une exception en mode strict). Utilisez mysqli_connect_error() pour les erreurs survenant lors de la connexion — mysqli_error() est destinée aux erreurs après une connexion réussie.

Conclusion

En conclusion, la fonction mysqli_error() est un outil pratique pour déboguer et gérer les erreurs MySQLi. En vérifiant la validité de la connexion et en comprenant comment récupérer des messages d'erreur spécifiques, vous pouvez créer des interactions avec la base de données plus robustes.

Fonctions associées

Pratique

Pratique
Quelles sont les façons de gérer les erreurs en PHP ?
Quelles sont les façons de gérer les erreurs en PHP ?
Was this page helpful?