Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

$dbh->selectall_arrayref to simple @array

by guacamayo (Acolyte)
on Sep 14, 2011 at 14:55 UTC ( #925926=perlquestion: print w/ replies, xml ) Need Help??
guacamayo has asked for the wisdom of the Perl Monks concerning the following question:

Hi! I need from ...
$dbh->selectall_arrayref( "SELECT ename FROM emp ORDER BY ename", { Slice => {} } );
only a @array as result and not a array_ref. How can I do that ? on Perl DBI Docs ...
my $emps = $dbh->selectall_arrayref( "SELECT ename FROM emp ORDER BY ename", { Slice => {} } ); foreach my $emp ( @$emps ) { print "Employee: $emp->{ename}\n"; }
but i need a alternative with 2 lines :-) Thanks a lot
@array [ value, value2, value3] or $string = "value, value2, value3";

Comment on $dbh->selectall_arrayref to simple @array
Select or Download Code
Re: $dbh->selectall_arrayref to simple @array
by Corion (Pope) on Sep 14, 2011 at 15:01 UTC
Re: $dbh->selectall_arrayref to simple @array
by metaperl (Curate) on Sep 14, 2011 at 18:02 UTC
Re: $dbh->selectall_arrayref to simple @array
by chrestomanci (Priest) on Sep 15, 2011 at 20:17 UTC

    I was puzzling over that today. The issue is that selectall_arra­yref gives you back a reference to an array of arrays, where each row from the query result is put into an array, and references to each of those arrays are put into a higher level array. A reference to that top level array is returned. All this is usefull if you are querying for several collums in each row, but is a useless level of indirection if you are only querying for one.

    The solution I used was to make use of the map function to flatten the data structure. I hope it does not look to much like code golf!

    my @query_results = map { $_->[0] } @{ $sth->fetchall_arrayref() };
Re: $dbh->selectall_arrayref to simple @array
by Juerd (Abbot) on Sep 18, 2011 at 16:04 UTC

    Why do you want an array without a reference? Arrays that are accessed by references can do exactly the same things, only the syntax is a bit different.

    By the way, consider DBIx::Simple, which allows you to do:

    my @emps = $db->query("SELECT ename FROM emp ORDER BY ename")->flat; foreach my $emp (@emps) { ... }
    "flat" means: take all results and return them as one flat list.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://925926]
Approved by Corion
Front-paged by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2014-07-14 03:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (254 votes), past polls