Seite 1 von 1

$db->sql_error()

Verfasst: 29.11.2005 23:29
von fanrpg
Also wenn ich eine MySQL Abfrage schreibe und mir falls ein Fehler kommt diese auch ausgeben lassen kann mache ich das so:

Code: Alles auswählen

$result = mysql_query() or die(mysql_error());
Dann gibt er mir auch die Fehlermeldung aus

Aber wenn ich das bei phpBB mit $db->sql_error() mache also so:

Code: Alles auswählen

$result = $db->sql_query() or die($db->sql_error());
Dann gibt er mir anstatt der Fehlermeldung einfach "Array" zurück.

Was muss ich daran ändern das das funktioniert? Oder ist $db->sql_error für sowas nicht ausgelegt?

Verfasst: 30.11.2005 00:29
von QCO
Aus der db/mysql4.php

Code: Alles auswählen

	function sql_error()
	{
		$result['message'] = mysql_error($this->db_connect_id);
		$result['code'] = mysql_errno($this->db_connect_id);

		return $result;
	}
Die Methode gibt also ein Array zurück, das musst du auch entsprechend ausgeben...

Code: Alles auswählen

$result = $db->sql_query() or die(implode('; Code: ', $db->sql_error()));

Verfasst: 30.11.2005 00:44
von LeoManiac
In Zeiten von PHP5 würd ich nicht mehr mit solchen Error Funktionen arbeiten sondern lieber mit Exceptions.

Mittlerweile gibts die 1. Minor Version da kann man ruhig langsam mal umstellen ... ich will auch gar nicht mehr unter PHP4 entwickeln das ist im Vergleich zur V5 grausig.

Verfasst: 30.11.2005 01:04
von QCO
Ich arbeite auch schon seit einer Weile mit PHP5, aber die Tatsache, dass es kein Release mit den Securityfixes aus der letzen 4er Version gibt, ist schon bedenklich.
Auch solche Meldungen http://www.heise.de/newsticker/meldung/66745 unterstreichen wohl eher, dass die Zeit für massiven PHP5-Einsatz noch nicht ganz reif ist.

Verfasst: 30.11.2005 08:20
von LeoManiac
Naja ganz ehrlich? Ich kann PEAR nichts abgewinnen...ich nutze es zwar wenn auch nur beruflich aber privat arbeite ich zb. lieber mit meiner MySQL Klasse die schöne Exception wirft das macht das Handling wesentlich einfacher und man braucht nicht ständig auf Fehler zu prüfen ... sondern setzt entweder fürs komplette Script oder nur für bestimmte Bereiche einen Try-Catch Block.
Mann kanns ja auch Kombinieren zb. die ConnectionException kannst ja aufs komplette Script catchen u. QueryExceptions brauchst ja nur dort wo du den Query auch ausführst.

Wenn daran mal wer Interesse hat einfach mal hier melden oder PN ich mach aus meinen privaten Codings kein Geheimnis ;)