.------[ Scott Taylor wrote (2002/09/11 at 11:07:21) ]------ | | Hello, | | I have an SQL table with 2 fields, ID and Descr and I want to load these | into an array and a hash. | | First the array @SecID should be just the first field and then the hash | %Sections should be ID=>Descr | | All I get is garbage | | This is the code that doesn't work, I know I'm missing something here, but | not what: | | $SQL = qq[Select * from T_Sec_ID]; | $sth = $dbh->prepare($SQL); | $sth->execute; | | my %Sections = $sth->fetchrow_hashref; | $sth->finish; | | $SQL = qq[select secid from T_Sec_ID]; | $sth = $dbh->prepare($SQL); | $sth->execute; | | my @SecIDs = $sth->fetchrow_arrayref; | $sth->finish; | | Here is the output, not what I want: | HASH(0x82c6388) | ARRAY(0x82c6370) | `-------------------------------------------------
There are two ways to do this the more advanced and the easy: Easy way: my %Sections; my $sth = $dbh->prepare("SELECT ID, Descr FROM T_Sec_ID"); $sth->execute; while( my($id, $desc) = $sth->fetchrow ) { $Sections{$id} = $desc; } $sth->finish; my @SecIDs = keys(%Sections); You don't really need the Array as you can always call keys(%Sections) and it will return the array you were trying to build into @SecIDs. This will also remove the need to do two SQL calls which isn't very efficient. Advanced way using references: my $section_ref; my $sth = $dbh->prepare("SELECT ID, Descr FROM T_Sec_ID"); $sth->execute; $section_ref = $sth->fetchrow_hashref; my @SecIDS = keys( %{ $section_ref } ); You'll probably want to read up on Perl references in the perlref man page. --------------------------------- Frank Wiles <[EMAIL PROTECTED]> http://frank.wiles.org --------------------------------- -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]