Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re^3: fetchrow_array

by bradcathey (Prior)
on May 27, 2005 at 16:02 UTC ( #461120=note: print w/replies, xml ) Need Help??

in reply to Re^2: fetchrow_array
in thread fetchrow_array

Thanks, but you lost me on:

$sth->bind_columns( \( @row{ @{$sth->{NAME_lc} } } ));

Can you unpack that for me? It thought binding is related to placeholders. What exactly is bind_columns doing and what is the gain? Appreciate it, TIA!

"The important work of moving the world forward does not wait to be done by perfect men." George Eliot

Replies are listed 'Best First'.
Re^4: fetchrow_array
by kutsu (Priest) on May 27, 2005 at 16:36 UTC

    bind_columns is binding columns ;), seriously though: NAME_lc are the lower case column names from the database, region and sales in this case, and these are in an array ref which is used as the keys for %row (using a hash slice). The reason it uses bind_columns is that it processes the columns one by one (allowing you to have a normal hash not a hash of an array). So it's doing something like this:

    $sth->bind_columns( \( @row{ @{$sth->{NAME_lc} } } )); # NAME_lc = lower case column name # so it's equal to \@row{\@region} (and \@row{\@sales}) # binds \$row{region} much as it would \$region while($sth->fetch) { # sets $row{region} with region's data # does same with sales print "$row{region}, $row{sales}\n"; # since this is rebinded each time %row is overwritten }

    I hope this helps

    "Cogito cogito ergo cogito sum - I think that I think, therefore I think that I am." Ambrose Bierce

Re^4: fetchrow_array
by injunjoel (Priest) on May 27, 2005 at 18:26 UTC
    Greetings all,
    Here is my crack at it.
    we know that
    returns the column names selected and lower-cased. with that we then utilized those names as a hash slice from the hash %row with the
    @row{ @{$sth->{NAME_lc}}};
    part. So up to this point we have a hash %row with keys equal to the lower-cased column names returned from the query. So next we reference the slice for the bind_columns call, which we accomplish by doing an \ on the entire list; the same as saying
    $sth->bind_columns(\($var1, $var2, $var3));
    which would create references for each var in the list.
    Nice way of doing it and probably one I will adopt in the future since I mostly use either fetchrow_hashref or just bind explicit vars.
    Does that make sense?

    "I do not feel obliged to believe that the same God who endowed us with sense, reason and intellect has intended us to forego their use." -Galileo

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://461120]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2018-01-20 03:26 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (226 votes). Check out past polls.