Mailinglisten-Archive |
Michael Siebert wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> hallo liste
>
> ich benutze ein einem projekt die wunderschöne pear-klasse DB und ihre
> "abkömmlinge".
> da ich in der entwicklung ja zwangsläufig auch mal fehler in mysql-statements
> habe, habe ich ein kleines problem... das ist nämlich, dass die klasse bei
> fehlern die mysql zurück gibt zwar wunderbare informationen zur
> zurückverfolgung liefert (dank pear:error) aber mir halt im normalfall nicht
> anzeigt, dass es einen fehler gibt, was ja in der produktion nicht falsch
> ist. klar könnte ich jetzt jedem query ein
>
> if (DB::is_error($ret)) {
> ..}
>
> folgen lassen allerdings sind mir das ehrlich gesagt zu viele queries um das
> da überall hinzuschreiben. es gibt zwar die option debug in einer
dann hast du wohl bei der Planung einige Fehler gemacht? ;)
> setOptions-methode von DB aber da die nicht dokumentiert ist, was da was
> bedeutet, ist die für mich nutzlos..
use the source...
> nun is meine frage im prinzip nur, wie ich die klasse dazu bringe, mir
> automagisch mitzuteilen wenn eine db transaktion nich so ging wie ich
> wollte...
> habt ihr da ne idee oder ein rtfm mit passender url für mich? (in dem pear man
> hab ich nix gefunden)
> - --
> MfG
> Michael Siebert
Wie gesagt, da pear spärlich dokumentiert ist, use the source. Habe mir
mit pear::DB eine Mantelklasse gebastelt, die so ziemlich alles aus der
DB holt. Da kann man dann wunderbar sein eigenes error_reporting
verwenden. Bei einigen Fehlern kann dir dann evtl. perror helfen. Wieso
du allerdings pear::DB einsetzt, wenn deine App nur unter MySQL läuft
ist mir fraglich. Wenn du ohne eigenen Wrapper arbeitest, dann musst du
unten noch $connID global einführen oder 'ne Referenz mitgeben.
Gruss,
Gerd
function errorHandle( $res, $query="" ){
//SOME ERROR CODES :
//ALL : -1 = UNKNOWN ERROR
//MYSQL : -5 = DUPLICATE PRIMARY KEY, MESSAGE = already exists
//MYSQL : -19 = NO SUCH FIELD; CHECK FIELD-LIST
empty( $query ) ? $query = $this->connID->last_query : $query = $query;
$val = $res->getMessage();
$code = $res->getCode();
$type = $res->getType();
$info = $res->getUserInfo();
$errstr = $res->toString();
$callback = $res->getCallback();
$mode = $res->getMode();
if( $this->onErrorDie === true )
die( $val . "<br/>QUERY : " . $query );
else{
if( $this->echoOut === true )
echo $query . "<br/>";
else
return $query;
}
}
--
# Gerd Terlutter | Müller+Blanck Software GmbH #
# office:+49 40 500 171-1| http://www.mplusb.de #
php::bar PHP Wiki - Listenarchive