![](https://seccdn.libravatar.org/avatar/bc1efdd7cadcc5c363a124c8a7f2e976.jpg?s=120&d=mm&r=g)
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; Dank allen für die Bemühungen Ciao Andre
![](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
participants (2)
-
Andre Heine
-
Oliver Kiehl