Zum Inhalt springen

Debuggen

In diesem Artikel konzentrieren wir uns auf die mysqli_debug()-Funktion in PHP, die verwendet wird, um Low-Level-Debug-Ausgaben für MySQLi-Verbindungen zu aktivieren, indem ein Debug-String an die MySQL-Client-Bibliothek übergeben wird. Wir bieten einen Überblick über die Funktion, ihre Funktionsweise und Beispiele für ihre Verwendung.

Einführung in die mysqli_debug()-Funktion

Die mysqli_debug()-Funktion ist eine integrierte PHP-Funktion, die Debug-Ausgaben für MySQLi-Verbindungen aktiviert. Sie funktioniert, indem ein spezifischer Debug-String an die zugrunde liegende MySQL-Client-Bibliothek übergeben wird. Diese Funktion ist hauptsächlich für das Low-Level-Debugging des MySQL-Client-Protokolls nützlich, erfordert jedoch, dass die MySQL-Client-Bibliothek mit aktivierter Debug-Unterstützung kompiliert wurde.

Verwendung der mysqli_debug()-Funktion

Die Verwendung der mysqli_debug()-Funktion ist unkompliziert. Sie rufen die Funktion mit einem einzelnen String-Argument auf, das die Debug-Direktiven enthält. Hier ist ein Beispiel:

Verwendung der mysqli_debug()-Funktion?

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);
?>

In diesem Beispiel rufen wir die mysqli_connect()-Funktion auf, um eine Verbindung zu einer MySQL-Datenbank mit einem Benutzernamen und Passwort herzustellen. Anschließend rufen wir die mysqli_debug()-Funktion mit einem Debug-String auf, der die MySQL-Client-Bibliothek anweist, Timing, Statement-IDs, Abfragen und andere Protokoll-Details auszugeben. Wenn Abfragen ausgeführt werden, wird die Debug-Information auf der Ausgabe ausgegeben. Beachten Sie, dass diese Funktion keinen booleschen Wert oder ein Verbindungsobjekt akzeptiert und erfordert, dass die MySQL-Client-Bibliothek mit aktivierter Debug-Unterstützung kompiliert wurde.

Erweiterte Verwendung

Die mysqli_debug()-Funktion kann auch in fortgeschritteneren Szenarien verwendet werden. Sie arbeitet jedoch auf Ebene der MySQL-Client-Bibliothek, was bedeutet, dass sie global für alle MySQLi-Verbindungen im aktuellen Prozess gilt und nicht für ein bestimmtes Verbindungsobjekt. Hier ist ein Beispiel:

Erweiterte Verwendung von 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);
?>

In diesem Beispiel erstellen wir zwei MySQLi-Objekte und stellen Verbindungen zu zwei verschiedenen MySQL-Datenbanken her. Anschließend rufen wir die mysqli_debug()-Funktion mit einem Debug-String auf, um das Debugging auf Protokollebene zu aktivieren. Da mysqli_debug() kein Verbindungsobjekt als Parameter akzeptiert, gilt sie global für alle MySQLi-Verbindungen im aktuellen Skript. Wenn Abfragen ausgeführt werden, wird die angegebene Debug-Information ausgegeben.

Fazit

Zusammenfassend bietet die mysqli_debug()-Funktion Low-Level-Debugging-Funktionen für MySQLi-Verbindungen durch die Schnittstelle zum Debug-Protokoll der MySQL-Client-Bibliothek. Obwohl sie spezifische Kompilierungsflags erfordert, global und nicht pro Verbindung arbeitet und kein standardmäßiges SQL-Abfrage-Logging umschaltet, hilft das Verständnis ihrer zeichenkettenbasierten Signatur und Einschränkungen Entwicklern bei der Fehlersuche bei MySQL-Client-Interaktionen. Für moderne PHP-Anwendungen sollten Sie mysqli_report() oder PDO::ATTR_ERRMODE für standardmäßige Fehlerbehandlungs- und Debugging-Workflows in Betracht ziehen.

Praxis

Welche Rolle spielen Syntax-Prüfer beim PHP-Debugging?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.