Martin: Mysql Tabelle auslesen und in einem mehrd. Array speichern

Beitrag lesen

Hi Martin,

ich hab zwar kein Array, sondern ein Hash, mit dem ich die Daten über den Feldnamen ansprechen kann, was den code besser lesbar macht,
aber du kannst ja ein Array draus machen.

use DBI;

$db = DBI->connect( 'DBI:mysql:database='.$DB_NAME,
                        $DB_User,
                        $DB_PWD,
                        {
                          RaiseError => 0,
                          AutoCommit => 1
                        }
                      ) || die "Database connection not made: $DBI::errstr";

$sth = $db->prepare( $SQLString ) or die $db->errstr;
$ra = $sth->execute();  # $ra = rows affected or undef in case of error

create global values:

hash %QData = (Column1Name => [@column1Values], Column2Name => [@column2Values], ...);

scalar $rc = rowcount

my $rv = $db->err;
my(@fields) = @{$sth->{NAME}};  # get all fieldnames
my $fc = @fields;   # count fields
$rc = 0;    # count rows
my $lo;    # init.
%QData = undef;

do{
$lo = $sth->fetchrow_hashref;         # get record
if ($lo ne ""){
   my(%data) = %{$lo};
   for (my $a = 0; $a < $fc; $a++){
     #print $data{$fields[$a]},"\n";
     $QData{$fields[$a]}[$rc] = $data{$fields[$a]};
   }
  $rc++;
}
} until ($lo eq "");

$db->disconnect();

Zugriff über $QData{'Feldname'}[$zeile]

Gruss
Egon

Hallo Martin,

danke dir vielmals, ist zwar ne andere Lösung, erfüllt aber dennoch einwandfrei ihren zweck :)

Mfg Martin