phpbar.de logo

Mailinglisten-Archive

[php] Pear:DB

[php] Pear:DB

Gerd Terlutter gerd at MplusB.de
Mon Jun 7 18:28:55 CEST 2004


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