Position actuelle: Accueil> Derniers articles> Utilisez MySQLI :: $ info pour comprendre les statistiques sur l'exécution de la requête MySQL

Utilisez MySQLI :: $ info pour comprendre les statistiques sur l'exécution de la requête MySQL

gitbox 2025-05-26

Lorsque vous utilisez PHP pour les opérations de base de données MySQL, les développeurs accordent généralement plus d'attention aux résultats de la requête eux-mêmes, tels que le nombre de lignes renvoyées ou si l'exécution est réussie, et il est facile d'ignorer un outil de débogage utile - l'attribut MySQLI :: $ info . Une fois certains types d'instructions SQL exécutées, cette propriété peut renvoyer plus de statistiques sur les résultats de l'exécution, nous aidant à comprendre l'impact d'une requête de manière plus exhaustive.

Qu'est-ce que MySqli :: $ info?

MySQLI :: $ info est une propriété en lecture seule de la classe MySQLI , utilisée pour fournir des informations statistiques de la dernière instruction SQL exécutée, et convient particulièrement aux instructions modifiées telles que l'insertion , la mise à jour et le chargement des données .

La valeur de retour de cette propriété est une chaîne et le format de contenu n'est pas fixe, mais il contient généralement des informations telles que le nombre de lignes affectées, le nombre de lignes répétées, le nombre de lignes d'avertissement et d'autres informations. Par exemple:

 $mysqli = new mysqli("localhost", "user", "password", "database");
$mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
echo $mysqli->info;

Les informations suivantes peuvent être sorties:

 Rows matched: 15  Changed: 15  Warnings: 0

Cela nous indique qu'un total de 15 enregistrements ont été appariés, 15 enregistrements ont été modifiés et aucun avertissement ne s'est produit.

Analyse du format de valeur de retour

mysqli :: $ info renvoie une chaîne formatée. Voici les mots clés de retour communs:

  • Enregistrements : le nombre d'enregistrements traités (principalement utilisés dans les données de charge )

  • DUPLICATION : le nombre d'enregistrements en double (commun dans INSERT ... sur la mise à jour de la clé en double )

  • Avertissements : nombre d'avertissements qui apparaissent lors de l'exécution

  • Lignes correspondantes : nombre de lignes à correspondre (généralement utilisées pour la mise à jour ou la suppression )

  • Modifié : le nombre de lignes qui sont réellement modifiées (indique que la valeur du champ change réellement)

Par exemple:

 $mysqli->query("INSERT INTO logs (event, created_at) VALUES ('login', NOW()), ('logout', NOW())");
echo $mysqli->info;

La sortie peut être:

 Records: 2  Duplicates: 0  Warnings: 0

Cela indique que deux enregistrements ont été insérés, sans duplication et sans avertissement.

Coopérer avec le système logarithmique pour l'analyse d'optimisation

En combinant MySqli :: $ info avec le système de journalisation, nous pouvons effectuer une analyse détaillée de l'impact des opérations de base de données. Par exemple:

 $mysqli->query("UPDATE products SET stock = stock - 1 WHERE id = 101");
$log = sprintf("Query info: %s", $mysqli->info);
file_put_contents("/var/log/db_ops.log", $log . PHP_EOL, FILE_APPEND);

De cette façon, le nombre de lignes affectées peut être enregistrée à chaque fois que l'inventaire est mis à jour, ce qui aide à l'optimisation post-débugage et aux performances.

Choses à noter

  1. Il n'a de sens qu'après les instructions prises en charge : sélectionnez les requêtes renvoyent généralement les chaînes vides.

  2. Il ne peut pas être remplacé par un mécanisme de gestion des erreurs : il ne s'agit pas d'un outil de rapport d'erreur, mais d'une information supplémentaire sur l'impact de l'exécution.

  3. Lors de l'exécution d'une mise en place multipliée, seule la dernière instruction est reflétée : si vous utilisez une requête multi-statement, elle ne peut refléter l'exécution du dernier.

  4. Différences de version linguistique : la structure de la chaîne de sortie peut être légèrement différente entre les versions MySQL et PHP.

résumé

MySQLI :: $ info est un outil de débogage simple mais pratique qui fournit des statistiques détaillées lors de l'exécution de relevés SQL non Querey. Il fournit des données de référence importantes pour le débogage, la journalisation et l'optimisation des requêtes. Dans les applications très performantes ou sensibles aux changements de données, l'utilisation rationnellement peut améliorer considérablement l'observabilité du système.

Pour plus de documentation officielle sur cette propriété, veuillez vous référer à: https://gitbox.net/php/mysqli.info