Aller au contenu

Débogage

Dans cet article, nous nous concentrerons sur la fonction mysqli_debug() de PHP, utilisée pour activer la sortie de débogage de bas niveau pour les connexions MySQLi en passant une chaîne de débogage à la bibliothèque cliente MySQL. Nous fournirons un aperçu de la fonction, son fonctionnement et des exemples d'utilisation.

Introduction à la fonction mysqli_debug()

La fonction mysqli_debug() est une fonction intégrée de PHP qui active la sortie de débogage pour les connexions MySQLi. Elle fonctionne en passant une chaîne de débogage spécifique à la bibliothèque cliente MySQL sous-jacente. Cette fonction est principalement utile pour le débogage de bas niveau du protocole client MySQL, bien qu'elle nécessite que la bibliothèque cliente MySQL soit compilée avec le support de débogage activé.

Comment utiliser la fonction mysqli_debug()

L'utilisation de la fonction mysqli_debug() est simple. Vous appelez la fonction avec un seul argument de chaîne de caractères contenant les directives de débogage. Voici un exemple :

Comment utiliser la fonction mysqli_debug() ?

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

// Enable debugging output for the MySQL client protocol
mysqli_debug("d, %t, %i, %n, %q, %o, %c, %s\n");

// execute queries using the connection
$result = $mysqli->query("SELECT 1");

mysqli_close($mysqli);
?>

Dans cet exemple, nous appelons la fonction mysqli_connect() pour nous connecter à une base de données MySQL avec un nom d'utilisateur et un mot de passe. Nous appelons ensuite la fonction mysqli_debug() avec une chaîne de débogage qui indique à la bibliothèque cliente MySQL de générer des informations sur les temps de traitement, les identifiants des instructions, les requêtes et d'autres détails du protocole. Lors de l'exécution des requêtes, les informations de débogage sont imprimées dans la sortie. Notez que cette fonction n'accepte ni un booléen ni un objet de connexion, et elle nécessite que la bibliothèque cliente MySQL soit compilée avec le support de débogage activé.

Utilisation avancée

La fonction mysqli_debug() peut également être utilisée dans des scénarios plus avancés. Cependant, elle fonctionne au niveau de la bibliothèque cliente MySQL, ce qui signifie qu'elle s'applique globalement à toutes les connexions MySQLi dans le processus actuel plutôt qu'à un objet de connexion spécifique. Voici un exemple :

Utilisation avancée de PHP mysqli_debug()

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

// Enable debugging for the MySQL client protocol
mysqli_debug("d, %q\n");

// execute queries using the first connection
$mysqli1->query("SELECT 1");

// Note: mysqli_debug() is global and affects all subsequent MySQLi connections
// in the same process. To debug the second connection, you would typically
// restart the script or use a separate process.

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

Dans cet exemple, nous créons deux objets MySQLi et nous connectons à deux bases de données MySQL différentes. Nous appelons ensuite la fonction mysqli_debug() avec une chaîne de débogage pour activer le débogage au niveau du protocole. Étant donné que mysqli_debug() n'accepte pas d'objet de connexion en paramètre, elle s'applique globalement à toutes les connexions MySQLi dans le script actuel. Lors de l'exécution des requêtes, les informations de débogage spécifiées sont affichées.

Conclusion

En conclusion, la fonction mysqli_debug() offre des capacités de débogage de bas niveau pour les connexions MySQLi en interagissant avec le protocole de débogage de la bibliothèque cliente MySQL. Bien qu'elle nécessite des indicateurs de compilation spécifiques, s'applique globalement plutôt que par connexion, et ne permette pas d'activer la journalisation standard des requêtes SQL, comprendre sa signature basée sur une chaîne de caractères et ses limites aide les développeurs à résoudre les problèmes d'interaction avec le client MySQL. Pour les applications PHP modernes, envisagez d'utiliser mysqli_report() ou PDO::ATTR_ERRMODE pour la gestion standard des erreurs et les flux de travail de débogage.

Pratique

Quel est le rôle des vérificateurs de syntaxe dans le débogage PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.