W3docs

debug

Erfahren Sie, wie die Funktion mysqli_debug() in PHP funktioniert, um das Debugging von MySQLi-Verbindungen auf niedriger Ebene zu aktivieren.

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

Einführung in die Funktion mysqli_debug()

Die Funktion mysqli_debug() ist eine in PHP integrierte Funktion, die Debugging-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 in erster Linie 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 Funktion mysqli_debug()

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

Wie verwendet man die Funktion mysqli_debug()?

<?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 Funktion mysqli_connect() auf, um eine Verbindung zu einer MySQL-Datenbank mit Benutzername und Passwort herzustellen. Anschließend rufen wir die Funktion mysqli_debug() mit einem Debug-string auf, der die MySQL-Client-Bibliothek anweist, Timing-Informationen, Statement-IDs, Abfragen und weitere Protokolldetails auszugeben. Wenn Abfragen ausgeführt werden, werden die Debug-Informationen in der Ausgabe angezeigt. Beachten Sie, dass diese Funktion keinen boolean- oder Verbindungs-object-Parameter akzeptiert und die MySQL-Client-Bibliothek mit Debug-Unterstützung kompiliert sein muss.

Erweiterte Verwendung

Die Funktion mysqli_debug() kann auch in komplexeren Szenarien eingesetzt werden. Sie arbeitet jedoch auf der 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 Verbindungs-object. Hier ist ein Beispiel:

Erweiterte Verwendung von PHP mysqli_debug()

<?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 verbinden uns mit zwei verschiedenen MySQL-Datenbanken. Anschließend rufen wir die Funktion mysqli_debug() mit einem Debug-string auf, um das Debugging auf Protokollebene zu aktivieren. Da mysqli_debug() kein Verbindungs-object als Parameter akzeptiert, gilt sie global für alle MySQLi-Verbindungen im aktuellen Skript. Wenn Abfragen ausgeführt werden, werden die angegebenen Debug-Informationen ausgegeben.

Fazit

Zusammenfassend lässt sich sagen, dass die Funktion mysqli_debug() Low-Level-Debugging-Möglichkeiten für MySQLi-Verbindungen bietet, indem sie mit dem Debug-Protokoll der MySQL-Client-Bibliothek interagiert. Obwohl sie spezifische Kompilierungsflags erfordert, global statt pro Verbindung arbeitet und das Standard-SQL-Abfrage-Logging nicht umschaltet, hilft das Verständnis ihrer string-basierten Signatur und ihrer Einschränkungen Entwicklern dabei, MySQL-Client-Interaktionen zu debuggen. Für moderne PHP-Anwendungen empfiehlt sich die Verwendung von mysqli_report() oder PDO::ATTR_ERRMODE für Standard-Fehlerbehandlung und Debugging-Workflows.

Übungen

Übung
Welche Rolle spielen Syntaxprüfer beim PHP-Debugging?
Welche Rolle spielen Syntaxprüfer beim PHP-Debugging?
Was this page helpful?