Seite 1 von 1

Debugmeldung - Fehler der letzten SQL-Abfrage

Verfasst: Mi 8. Jan 2014, 18:26
von rethus
Ich möchte gerne bei einem Fehler eines abgesetzten SQL-Querys eine Message ausgeben, die den Fehler beinhaltet.

So hab ich es versucht:

Code: Alles auswählen

$txt = i18n("Fehler beim speichern des Kontaktes %s");
$page->displayCriticalError(sprintf($txt , $db->getErrorNumber() ));
Leider ist getErrorNumber leer, ebenso wie getErrorMessage(). Aber der zuvor ausgeführte INSERT-Befehl muss ein Fehler enthalten, da nichts in die DB geschrieben wird.

Warum ist der Fehler-Speicher dennoch leer?
Und wie kann ich für einen query() eine Debugausgabe machen, so dass mit der generierte SQL-String ausgegeben wird?

Re: Debugmeldung - Fehler der letzten SQL-Abfrage

Verfasst: So 12. Jan 2014, 09:45
von xmurrix
...Ich möchte gerne bei einem Fehler eines abgesetzten SQL-Querys eine Message ausgeben, die den Fehler beinhaltet....
Ein Fehler in der letzten ausgeführten SQL-Anweisung sollte über $db->getErrorMessage() sowie $db->getErrorNumber() auslesbar sein, sofern die MySQL-Extension einen Fehler zurückliefert und keine weitere SQL-Anweisung ausgeführt wird. Wenn das dennoch nicht passiert, müsste man nachprüfen warum...
...Und wie kann ich für einen query() eine Debugausgabe machen, so dass mit der generierte SQL-String ausgegeben wird?...
Du kannst pro DB-Instanz das Profiling aktivieren, dabei werden alle durch diese DB-Instanz ausgeführten Statements und deren Ausführungszeit gelogt.

Code: Alles auswählen

$oDb = new cDb(array('enableProfiling' => true));
$oDb->query('SELECT * FROM ...);
var_dump(cDb::getProfileData());