![](https://seccdn.libravatar.org/avatar/1b7db438a371e60bb24f5246ba9d0ac2.jpg?s=120&d=mm&r=g)
On 29-Jun-2001, Andre Heine wrote:
Hallo alle zusammen,
in meinem Modul probiere ich Schreibarbeit für eine Db Anfrage zu sparen.
Folgendes Problem:
Das Modul gibt mir eine Referenz auf einen Hash zurück. Das funktioniert prima, mit
$ref->{'$key'}
kann ich problemlos auf eine Reihe der DB zugreifen.
Aber wie sieht es aus, wenn ich eine kpl. Tabelle haben möchte?
Was muss ich am folgenden Modul ändern?
############### schnipp ################################
package my_shop;
use Exporter; use DBI;
@ISA = ('Exporter','DBI'); # Von Exporter erben @EXPORT_OK = ('get_array'); # Func´s exportieren
sub get_array # hash_ref holen... { my ($db,$sql_host,$port,$pwd,$sql_user,$sql_query) = @_; my (@row,$hash_ref,$array_ref);
$dbh = DBI->connect("dbi:mysql:$db:$sql_host:$port", "$sql_user", "$pwd", {RaiseError => 1, AutoCommit => 1});
my $sth = $dbh->prepare("$sql_query") or die $sth->errstr; $sth->execute or die $sth->errstr;
while ($hash_ref = $sth->fetchrow_hashref) { return $hash_ref; }
$sth->finish;
$dbh->disconnect;
}
1;
Hi, ich habe zwar noch nie mysql verwendet, aber mit Sybase (wuerde mich wundern wenn das anders waere) mache ich das so: my $array_ref = $dbh->selectall_arrayref($sql_qry); das liefert Dir dann eine Referenz auf ein Array von Referenzen. mit einer foreach-Schleife kannst Du dann mit den Daten machen was Du willst: foreach my $ref (@{$array_ref}) { my ($erste_spalte, $zweite_spalte, $usw) = @{$ref}; } Gruss, Oliver