Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: An Array Without and Index

by Neighbour (Friar)
on Aug 13, 2012 at 09:08 UTC ( #987077=note: print w/ replies, xml ) Need Help??


in reply to An Array Without and Index

If your u2addr-table isn't extraordinary large, you could just fetch the whole thing in a hashref and loop through that:

my @results; my $hr_addresses = $dbh->selectall_hashref("SELECT addr, id FROM u2add +r", "addr"); if (!defined $hr_addresses) { die("Error executing query: " . $dbh->er +rstr); } foreach my $addr (@addr) { if (defined $hr_addresses->{$addr}) { push(@results, $hr_addresses->{$addr}) } else { print("Error, ID of address [$addr] not found\n"); } }
The use of selectall_hashref (or selectall_arrayref) relieves you of having to prepare, execute and fetch* everything yourself. All that's left is to use the results (in this case as an in-memory hashed lookup for all addresses in @addr). On top of that, calling finish isn't neccesary when you are fetching *all* the results, only when you want to abort fetching results partly through.
Besides that, if selectall_hashref (or selectall_arrayref) returns undef, then executing the query went wrong. This is a very nice thing to know. This is also different from the query executing correctly, but returning no results (which is slightly more difficult to check when using fetchrow_array).

Edit: Whoops, got the keyfield of the query wrong, fixed now.


Comment on Re: An Array Without and Index
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://987077]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2015-08-01 03:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (285 votes), past polls