Schrift
[thread]3448[/thread]

DBI 1.42, Array of Hashes funktioniert nicht mehr: fetchall_arrayref



<< >> 4 Einträge, 1 Seite
steffenw
 2004-05-04 15:52
#32112 #32112
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
fetchall_arrayref brachte in der Vergangenheit immer eine Arrayreferenz von Hashes, wenn ich die Namen als Hashreferenz übergebe. Das funktioniert mit der Version 1.42 nicht mehr.

Code: (dl )
1
2
3
4
5
my $rows = $sth->fetchall_arrayref
( # als Hashreferenz übergeben, daß Array of Hash entsteht
 { map +($_ => 1), @{$sth->{NAME_uc}}
 }
);


Als Ausweg könnte ich jetzt wieder fetchrow_arrayref nehmen und das Array selbst zusammenpushen. Oder gibt es da jetzt eine effektivere Variante. fetchrow_hashref scheidet doch aus, weil ich doch in der übergeordneten Struktur eine Arrayreferenz will und keine Hashreferenz.

Änderung:
In der Überschrift habe ich selectall.. stehen, da habe ich mich aber nur verschrieben.\n\n

<!--EDIT|steffenw|1083672906-->
$SIG{USER} = sub {love 'Perl' or die};
esskar
 2004-05-04 16:17
#32113 #32113
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
kommt ne fehlermeldung, oder kommt gar nix zurück oder was falsches?
steffenw
 2004-05-04 16:28
#32114 #32114
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja es kommt ein Fehler:

Not a HASH reference at ... Perl/site/lib/DBI.pm line 1821

In der neuen Dokumentation zum Modul steht jetzt:
Code: (dl )
1
2
$ary_ref  = $sth->fetchall_arrayref;
$ary_ref  = $sth->fetchall_arrayref( $slice, $max_rows );


In der alten stand noch drin:
Code: (dl )
$tbl_ary_ref = $sth->fetchall_arrayref({ foo=>1, BAR=>1 });

 
Bin die gerade noch einmal durchgegangen.

Obwohl, ich hab's gerade umgeändert:
Code: (dl )
1
2
3
4
my $rows;
while (my $row = $sth->fetchrow_hashref('NAME_uc'))
{ push @$rows, {%$row};
}

Das ist eigentlich auch ganz kurz.\n\n

<!--EDIT|steffenw|1083673771-->
$SIG{USER} = sub {love 'Perl' or die};
Crian
 2004-05-04 16:34
#32115 #32115
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
[quote=steffenw,04.05.2004, 13:52]In der Überschrift habe ich selectall.. stehen, da habe ich mich aber nur verschrieben.[/quote]
Hab es auf fetchall_arrayref geändert :)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 4 Einträge, 1 Seite



View all threads created 2004-05-04 15:52.