La surveillance de l'état d'exécution des requêtes SQL est essentielle pour déboguer et optimiser les performances lors du développement d'applications PHP. L'extension MySQLI nous fournit plusieurs façons d'interagir avec la base de données MySQL, où la fonction MySQLI :: $ Info est un outil puissant pour obtenir des informations détaillées sur la dernière requête SQL exécutée. Cet article présentera comment utiliser la fonction MySQLI :: $ Info pour surveiller l'état de l'exécution SQL en temps réel.
MySQLI :: $ info est une propriété de la classe PHP MySQLI qui fournit des informations détaillées sur l'interaction avec la base de données, en particulier après l'exécution de la requête. Grâce à cette propriété, les développeurs peuvent obtenir le statut de l'exécution de l'instruction SQL, y compris le nombre de lignes affectées, les informations d'avertissement, etc.
Cette propriété est principalement utilisée dans les scénarios suivants:
Obtenez des informations statistiques après l'exécution de la requête SQL
Vérifiez s'il y a des avertissements pendant l'exécution de SQL
Obtenez le nombre de lignes affectées (par exemple, après une opération de mise à jour ou de suppression)
MySQLI :: $ info est une propriété en lecture seule qui renvoie un message lié à l'exécution de la dernière instruction SQL. L'utilisation de base est la suivante:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Créer une connexion de base de données</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database_name"</span></span><span>);
</span><span><span class="hljs-comment">// Vérifiez si la connexion réussit</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// mettre en œuvreSQLRequête</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"UPDATE users SET status = 'active' WHERE last_login > '2025-01-01'"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>) === </span><span><span class="hljs-literal">TRUE</span></span><span>) {
</span><span><span class="hljs-comment">// SortirSQLmettre en œuvre状态</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"SQLmettre en œuvre成功: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->info;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"SQLmettre en œuvre失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-comment">// Fermer la connexion</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans l'exemple ci-dessus, après avoir exécuté l'instruction de mise à jour , nous pouvons obtenir les détails de l'exécution SQL via $ mysqli-> info . Si SQL s'exécute avec succès, il renvoie une information sur le nombre de lignes affectées. Si l'exécution de SQL échoue, il publie un message d'erreur.
La valeur de retour de MySqli :: $ info contient généralement ce qui suit:
Nombre de lignes affectées : par exemple, pour des opérations telles que l'insert , la mise à jour , la suppression, etc., MySQLI :: $ info renverra le nombre de lignes affectées.
Nombre d'avertissements : Si un avertissement se produit lors de l'exécution de SQL, le contenu renvoyé peut afficher le nombre d'avertissements.
Autres informations de requête : pour des requêtes spécifiques, MySQLI :: $ info peut également renvoyer d'autres informations d'exécution.
Par exemple :
<span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"UPDATE users SET status = 'active' WHERE last_login > '2025-01-01'"</span></span><span>;
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$mysqli</span></span><span>->info; </span><span><span class="hljs-comment">// retour:Records updated: 50</span></span><span>
</span></span>Dans cet exemple, MySQLI :: $ info renverra un message indiquant que 50 enregistrements ont été mis à jour.
Afin de réaliser la surveillance en temps réel de l'état d'exécution SQL, nous pouvons obtenir en continu des informations de requête via MySQLI :: $ info et la vérifier après l'exécution de chaque opération SQL. Cette méthode est particulièrement adaptée au débogage ou à l'analyse des performances au cours de la phase de développement.
Par exemple, lors de l'exécution de plusieurs requêtes SQL par lots, nous pouvons surveiller l'effet de chaque opération en enregistrant la valeur de retour de MySQLI :: $ info après chaque requête:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$queries</span></span><span> = [
</span><span><span class="hljs-string">"INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]')"</span></span><span>,
</span><span><span class="hljs-string">"UPDATE users SET status = 'inactive' WHERE last_login < '2024-01-01'"</span></span><span>,
</span><span><span class="hljs-string">"DELETE FROM users WHERE id = 101"</span></span><span>
];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$queries</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$query</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Requêtemettre en œuvre成功: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->info . </span><span><span class="hljs-string">"<br>"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Requêtemettre en œuvre失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans cet exemple, chaque fois que nous exécutons une requête, nous sortirons immédiatement l'état d'exécution de l'instruction SQL actuelle via $ mysqli-> info . Ceci est très utile pour les opérations par lots ou le traitement des transactions complexes, et peut nous aider à surveiller les résultats d'exécution en temps réel.
Applicable uniquement à la dernière instruction SQL : MySQLI :: $ info ne peut fournir des commentaires que sur la dernière instruction SQL exécutée. Si vous exécutez plusieurs requêtes dans le même script, elle ne renvoie que les informations d'exécution de la dernière requête.
Problème de connexion de la base de données : s'il y a un problème avec la connexion de la base de données, les informations MySQLI :: $ peuvent ne pas renvoyer des informations valides, vous devez donc vous assurer que la connexion de la base de données est normale lorsque vous l'utilisez.
Erreurs et avertissements : MySQLI :: $ Les informations sont principalement utilisées pour obtenir un aperçu de l'exécution. Si vous avez besoin d'informations d'erreur détaillées, vous devez utiliser l'attribut d'erreur MySQLI :: $ .
MySQLI :: $ info est une propriété très pratique qui peut aider les développeurs à surveiller l'état d'exécution des requêtes SQL en temps réel. En utilisant cette propriété, vous pouvez obtenir des informations d'exécution détaillées après avoir effectué des opérations SQL, aidant ainsi les développeurs à améliorer et à optimiser le code. En particulier dans les opérations de base de données complexes et les requêtes par lots, MySQLI :: $ Info peut fournir des informations de rétroaction clés pour aider les développeurs à effectuer des ajustements correspondants.
Si vous créez une application PHP qui nécessite des opérations SQL fréquentes, une surveillance en temps réel combiné avec MySQLI :: $ Info améliorera considérablement votre efficacité de débogage et d'optimisation.