Debugmeldung - Fehler der letzten SQL-Abfrage

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Debugmeldung - Fehler der letzten SQL-Abfrage

Beitrag 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?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Debugmeldung - Fehler der letzten SQL-Abfrage

Beitrag 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());
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Antworten