Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
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 drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2014-07-26 02:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (175 votes), past polls