Zum Inhalt springen

Debugen von Abfragen

Erstellt am 13. Dezember 2010 · 1 Antwort · letzte Antwort am 15. Januar 2011

Tags: Frage

georgbez ·

Hallo!

Welche Möglichkeiten gibt es eine Abfrage zu debuggen, also den SQL-Code auszugeben? In meinem Respository habe ich ja "nur" die folgenden Statements:

$query = $this->createQuery();
$query->matching( $query->equals( 'location', $location ) );
return $query->execute();

Zur Selbstüberprüfung und auch zur Fehlersuche wäre es halt schick wenn man die "SELECT..."-Statements sehen könnte.

Danke schon mal.

Viele Grüße,
Georg

Kurtux ·

Hallo Georg,

wenn Dein $query Objekt eine Eigenschaft/Property hat, in der das Select-Statement drin steht, dann kannst Du in mit der PHP built-in Funktion error_log() ausgeben. Wenn z.B. das Select-Statement in der Eigenschaft/Property sql drin steht, dann so diesen Statement protokollieren:

error_log($query->sql);

In Abhängigkeit der Direktive error_log in php.ini wird der Statement in das entsprechende Log geschrieben.

Auf Linux und in eine eigene Datei so z.B.:
error_log = /var/log/php.log
Die php.log schreibt der Apache. Denke daran ihm die Schreibrechte für den Pfad zu geben.

Auf Windows und in eine eigene Datei sollte es so z.B. funktionieren:
error_log = C:\php.log

syslog sollte bei Windows ab Windows 2000 in das Ereignisprotokoll schreiben - habe sowas noch nie gemacht:
error_log = syslog

Gruß

Wolfram