Thread Can't locate object method... (4 answers)
Opened by pktm at 2003-10-21 21:54

Strat
 2003-10-22 03:04
#35623 #35623
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
in $rv speicherst du den errorcode des execute(), anhand dessen du einen eventuellen fehler ueberpruefen koenntest. Da z.B. MySql beim prepare nur das SQL-Statement auf korrektheit ueberprueft (weiss nicht 100% sicher, ob es in der neuen DBI auch so ist), treten Datenbankfehler da fast immer beim execute() auf, weswegen du dort einen fehler abfangen solltest.

$sth ist ein Statementhandle (ein Unterobjekt von DBI), ueber den du mit den verschiedenen Methoden (fetchrow, fetchrow_hashref, fetchrow_arrayref) die Daten bekommen kannt. Die am haeufigsten dafuer verwendete Syntax ist:
Code: (dl )
1
2
3
4
5
6
while (my $data = $sth->fetchrow_hashref()) {
# mach was mit $data, z.B.
foreach my $field (keys %$data) {
print "$field => $data->{$field}\n";
}
} # while

Wenn man nur eine Zeile auslesen will, verwende ich recht gerne
Code: (dl )
1
2
3
my $arrayRef = $dbh->selectrow_array($statement) or die "Fehler: " . $dbh->errstr; 
# oder:
my $hashRef = $dbh->selectrow_hashref($statement) or die "Fehler: " . $dbh->errstr;

weil man dafuer kein prepare/execute braucht
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Can't locate object method...