Leser: 34
Quotekonrolllesen lohnt sich wieder :)
2011-07-31T06:37:29 rostider Andere befasst sich mit dem Klassenentwurf für DB-Anbindung. In Letzterem gibt es auch einen Abschnitt zur sinnvollen Verwendung einer Callbackfunktion und ein Abschnitt zum Thema Pagination.
http://rolfrost.de/map/article/dbi
Quotenichtmal zum lernen finde ich alles gut, z.b. dass die diversen fehler bei den connects und executes unterdrückt werden, ist sicher nicht hilfreich bei der fehlersuche.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
sub new{ my $class = shift; my %cfg = ( user => '', pass => '', port => 3306, host => 'localhost', base => '', @_ ); # das Objekt mit dem DB-Handle und dem Statement-Handle my $self = bless{ DBH => undef, STH => undef, }, $class; # Prepared Statement my $q = q(SELECT name FROM unicode WHERE cpd = ?); my $dsn = "DBI:mysql:database=$cfg{base};host=$cfg{host};port=$cfg{port}"; eval{ $self->{DBH} = DBI->connect_cached( $dsn, $cfg{user}, $cfg{pass}, { RaiseError => 1, PrintError => 0, } ); $self->{STH} = $self->{DBH}->prepare_cached($q); }; return $@ ? undef : $self; }
Quotebetrachte ich somit auch als persönliche Ansichtsache Deinerseits, verbunden mit einem untauglichen Versuch, mein Tutorial in ein schlechtes Licht zu rücken.nichtmal zum lernen finde ich alles gut,
2011-07-31T12:18:24 rostiverbunden mit einem untauglichen Versuch, mein Tutorial in ein schlechtes Licht zu rücken.
Quotedass die diversen fehler bei den connects und executes unterdrückt werden, ist sicher nicht hilfreich bei der fehlersuche.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
sub error { my $self=shift; my $error=''; $error=$self->{_error} if($self->{_error}) $self->{_error}=''; return $error; } sub _set_error { my $self=shift; my $error=shift // ''; $self->{_error}=$error; }
1 2 3 4 5
unless($self->{DBH}->do(...)) { $self->_set_error($self->{DBH}->errorstr()); return undef; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
sub set_error_callback { my $self=shift; my $handler=shift // sub{}; return 0 unless(ref($error) eq 'CODE'); $self->{_error_handler}=$handler; return 1; } sub _set_error { my $self=shift; my $error=shift // ''; $self->{_error}=$error; $self->{_error_handler}->($self,$error) $self->{_error_handler}; }
QuoteEs ist zwar nett alles in eval zu packen, aber hier ist es unnötig, da DBI sauber arbeitet und kein die macht wenn man es nicht wünscht.