Thread Allg. Frage zum Speichern von Datenbankabfragen: DBI (12 answers)
Opened by Duff at 2007-05-31 13:00

Strat
 2007-06-02 11:31
#77157 #77157
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, zum speichern wuerde ich diese syntax verwenden. du hast danach die Wahl, ob du dir das result als array, arrayref oder hashref zurueckgeben lassen willst. Wenn du mit SELECT * arbeitest, ist IMHO die einzig sichere Methode die folgende:
Code: (dl )
1
2
3
while( my $dataHashRef = $sth->fetchrow_hashref ) {
# mach was mit $dataHashRef
}

Mit ->fetchrow und ->fetchrow_arrayref kann man nur dann sicher arbeiten, wenn man die Reihenfolge der Felder im select fix angibt (also ohne *). Denn wenn da mal jemand die Datenbank neu anlegt oder erweitert, fliegt das Script sonst ( bei * und array) auf die Nase...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use Data::Dumper;
my $placeHolder1 = 20;
my $sql = 'SELECT *.... where blablabla = ?';

my $sth = $dbh->prepare( $sql )
or die "Error in preparing SQL: $DBI::errstr\nSQL: $sql\n\n";
$sth->execute( $placeHolder1 )
or die "Error in executing SQL: ", $sth->errstr, "\n";

while( my $data = $sth->fetchrow_hashref ) {
print Dumper( $data );
} # while
$sth->finish;
\n\n

<!--EDIT|Strat|1180769531-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Allg. Frage zum Speichern von Datenbankabfragen: DBI