W3docs

info

Découvrez la fonction mysqli_info() en PHP, qui retourne des informations sur la dernière requête exécutée, avec exemples et bonnes pratiques.

Cet article traite de la fonction mysqli_info() en PHP, qui retourne une chaîne lisible décrivant ce qu'a effectué la dernière requête exécutée. Vous apprendrez ce que retourne la fonction, quelles instructions produisent une sortie, comment l'appeler dans les styles procédural et orienté objet de MySQLi, et en quoi elle diffère des fonctions apparentées telles que mysqli_affected_rows().

Ce que retourne mysqli_info()

mysqli_info() est une fonction PHP intégrée qui retourne une chaîne de statut formatée pour la dernière requête exécutée sur une connexion donnée. La chaîne correspond au texte que le serveur MySQL rapporte pour l'instruction — elle est destinée aux humains, non à l'analyse automatique.

Elle ne produit une chaîne que pour les instructions qui modifient ou chargent plusieurs lignes. Pour les autres requêtes (un simple SELECT, un CREATE TABLE, etc.), elle retourne une chaîne vide ou NULL. Les instructions qui produisent une chaîne sont :

InstructionExemple de chaîne retournée
INSERT INTO ... SELECT ...Records: 3 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...)Records: 2 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ...Records: 3 Duplicates: 0 Warnings: 0
UPDATE ...Rows matched: 40 Changed: 40 Warnings: 0

Le format n'étant pas stable selon les types d'instructions ou les versions de MySQL, traitez la chaîne comme une valeur d'affichage. Pour lire des nombres individuels de façon programmatique, utilisez les fonctions dédiées — voir mysqli_affected_rows() et mysqli_warning_count().

Syntaxe

mysqli_info() prend le lien retourné par mysqli_connect() :

// Procedural style
string mysqli_info(mysqli $link)

// Object-oriented style
string $mysqli->info

Dans l'API orientée objet, info est une propriété, pas une méthode — notez qu'il n'y a pas de parenthèses.

Comment utiliser mysqli_info()

Appelez mysqli_info() sur une connexion MySQLi valide juste après avoir exécuté une requête avec mysqli_query(). Effectuez la vérification du statut avant d'émettre la requête suivante, car chaque requête écrase le statut précédent.

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

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

// A multi-row INSERT produces a status string
$sql = "INSERT INTO users (name) VALUES ('Ann'), ('Bob'), ('Cara')";

if (mysqli_query($mysqli, $sql)) {
    echo mysqli_info($mysqli);
} else {
    echo "Query failed: " . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

Pour l'insertion de trois lignes ci-dessus, le script affiche :

Records: 3  Duplicates: 0  Warnings: 0

Ici, Records est le nombre de lignes traitées par l'instruction, Duplicates compte les lignes en conflit avec une clé unique, et Warnings signale les problèmes non fatals survenus lors de l'exécution.

Style orienté objet

La même logique utilisant l'API MySQLi orientée objet lit la propriété info :

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

if ($mysqli->connect_errno) {
    die("Connection failed: " . $mysqli->connect_error);
}

$mysqli->query("INSERT INTO users (name) VALUES ('Ann'), ('Bob'), ('Cara')");

echo $mysqli->info; // Records: 3  Duplicates: 0  Warnings: 0

$mysqli->close();
?>

mysqli_info() vs mysqli_affected_rows()

Ces deux fonctions sont faciles à confondre :

  • mysqli_info() retourne une chaîne formatée pour l'affichage et ne fonctionne que pour les types d'instructions listés ci-dessus.
  • mysqli_affected_rows() retourne un entier comptant les lignes modifiées par INSERT, UPDATE, DELETE ou REPLACE — utilisez cette fonction quand vous avez besoin d'un nombre dans votre code.

Si vous avez besoin du compte, n'analysez jamais la chaîne de mysqli_info() ; appelez directement mysqli_affected_rows().

Pièges courants

  • Un simple SELECT ne retourne rien. mysqli_info() est vide pour les SELECT ; pour compter les lignes retournées, utilisez mysqli_num_rows() sur le jeu de résultats.
  • Le statut est réinitialisé à la prochaine requête. Lisez mysqli_info() immédiatement après la requête qui vous intéresse.
  • Ne parsez pas la chaîne. Son libellé varie selon les types d'instructions et les versions du serveur ; utilisez les fonctions dédiées de comptage et d'avertissement pour la logique.

Conclusion

mysqli_info() est un moyen rapide d'obtenir un résumé lisible de ce qu'a effectué la dernière requête — combien d'enregistrements ont été traités, combien étaient des doublons, et combien d'avertissements sont survenus. Utilisez-la pour la journalisation et le débogage, et tournez-vous vers mysqli_affected_rows() ou mysqli_warning_count() quand votre code a besoin des nombres eux-mêmes. Pour en savoir plus sur l'exécution des requêtes, consultez l'aperçu PHP MySQLi.

Pratique

Pratique
Que retourne la fonction PHP mysqli_info() ?
Que retourne la fonction PHP mysqli_info() ?
Was this page helpful?