WordPress SQL Queries debuggen

Es gibt verschiedene Möglichkeiten, Probleme mit SQL-Statements innerhalb von WordPress zu untersuchen und zu debuggen. Hier sind die wichtigsten Methoden zusammengefasst:

Debugging aktivieren

Der erste Schritt beim Debuggen besteht darin, den Debug-Modus zu aktivieren. Dies erfolgt über die wp-config.php mit folgenden Einträgen:

define( 'WP_DEBUG', true ); // Aktiviert Debugging
define( 'WP_DEBUG_LOG', true ); // Schreibt Debug-Informationen in /wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // Verhindert die Anzeige von Debug-Informationen

WICHTIG: WP_DEBUG_DISPLAY sollte auf produktiven Websites nie aktiviert sein, da dies sensible Informationen preisgeben kann. Das debug.log sollte ebenfalls geschützt werden, um den Zugriff auf Debug-Informationen durch Unbefugte zu verhindern.

Query-Debugging

Mit $wpdb stehen dir Funktionen zur Verfügung, um das Debugging von SQL-Queries zu steuern:

global $wpdb;
$wpdb->show_errors(); // Zeigt Fehlermeldungen für SQL-Queries an
// oder
$wpdb->hide_errors(); // Verbirgt Fehlermeldungen

WICHTIG: $wpdb->show_errors() zeigt Fehlermeldungen auch an, wenn WP_DEBUG auf false gesetzt ist. Daher sollte diese Methode nur in Kombination mit der Überprüfung des Debug-Modus verwendet werden:

global $wpdb;
if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
    $wpdb->show_errors();
}

Um einen SQL-Fehler explizit auszugeben, kannst du folgenden Befehl nutzen:

$wpdb->print_error();

Dieser prüft, ob beim letzten SQL-Statement ein Fehler aufgetreten ist.

Beim Aufruf von $wpdb->insert() gibt die Methode false zurück, falls ein Fehler auftritt:

global $wpdb;
if ( !$wpdb->insert() ) {
    echo "Ein Fehler ist aufgetreten";
}

Alle Queries einsehen

Um alle von WordPress ausgeführten SQL-Queries zu betrachten, aktiviere SAVEQUERIES:

define( 'SAVEQUERIES', true );

Dadurch werden alle Queries im Array $wpdb->queries gespeichert. Um diese Daten anzuzeigen:

if ( current_user_can( 'administrator' ) ) {
    global $wpdb;
    echo "<pre>";
    print_r( $wpdb->queries );
    echo "</pre>";
}

In diesem Artikel findest du weitere Informationen dazu, wie du Queries loggen kannst.

Häufiges Problem

Wenn kein Eintrag in die Datenbank geschrieben wird, obwohl keine Fehlermeldung auftritt, könnten ungültige Daten die Ursache sein. Bei einem varchar(50) Feld und einem String mit 60 Zeichen wird der Eintrag fehlschlagen, ohne eine Fehlermeldung. Daher sollten Daten vor dem Insert-Statement geprüft werden.

Multisite

Für die Fehlersuche in WordPress Multisites muss die Konstante DIEONDBERROR in der wp-config.php aktiviert werden:

define( 'DIEONDBERROR', true );

Diese Einstellungen helfen dabei, SQL-Probleme effizient zu identifizieren und zu beheben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert