Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

referring to individual elements after fetchrow_arrayref finds a '1' attached

by scratch (Sexton)
on Sep 15, 2001 at 02:16 UTC ( [id://112565]=perlquestion: print w/replies, xml ) Need Help??

scratch has asked for the wisdom of the Perl Monks concerning the following question:

Hello monks, Here's the code I'm working with:
my $sth2 = $dbh->prepare( "SELECT WORKERID,FAMID,CHILDID FROM p9315_2_ +partial_data WHERE WORKERID = '$pass'" ); $sth2->execute(); while ( $array_ref_partial = $sth2->fetchrow_arrayref ) {push @rows_pa +rtial, [ $array_ref_partial ]; #copy array contents to @row push (@partial_famids, @$array_ref_partial[1] );
When I look at the values that are pushed onto the @partial_famids array, I find the correct values (the 2nd) elements from the @$array_ref_partial array, but they have a '1' attached to them. For example, where I might expect to see values of 'family', 'smith', and 'stevenson' I find 'family1', 'smith1' and 'stevenson1'.

This is querying a MySQL database under Windows95.

Obviously, I'd like to know why I'm seeing that '1' attached to my values. I'm guessing somehow that array reference value is making its way into the data, but I have no idea how. The values look correct in the database.

I've spent the afternoon reading various bits of documentation but I'm coming up empty. Any help is much appreciated.



  • Comment on referring to individual elements after fetchrow_arrayref finds a '1' attached
  • Download Code

Replies are listed 'Best First'.
Re: referring to individual elements after fetchrow_arrayref finds a '1' attached
by chromatic (Archbishop) on Sep 16, 2001 at 02:50 UTC
    There's not enough information to answer this. I'd debug this by printing $array_ref_partial inside the while loop. I'm also not sure why you're pushing an array reference containing an array reference onto @rows_partial, but without seeing your printing code, I can't be sure that's wrong.
    while ($array_ref_partial = $sth2->fetchrow_arrayref) { warn join(' | ', @$array_ref_partial), "\n"; push @rows_partial, $array_ref_partial; push @partial_famids, $array_ref_partial->[1]; }
    On the other hand, since DBI reuses the same reference each time for fetchrow_arrayref(), you might mean something like this:
    push @rows_partial, [ @$array_ref_partial ];
    That fits more in line with your comment about copying the array.
      Thanks. You're correct when you pointed out that it was curious I was pushing the array reference onto @rows_partial. I 'm really pushing the values therein so my code does read

      push @rows_partial, [ @$array_ref_partial ];

      What I'm trying to do is create an array (@partial_famids) that contains not all the elements returned by fetchrow_arrayref, but only the 2nd elements in each array returned.

      My code to print the values of @partail_famids is just this:

      foreach $id (@partial_famids) { print "This famid is: $id \n", }

      I can't seem to get something through my thick skull. The values of $id each have a number '1' attached to them (smith1, davis1, etc), and like I said this seems to be the reference from fetchrow_arrayref, but I'm at a loss when I'm thinking about other ways to do this.

      I suppose I could run another fetchrow_array query, but it seems like I should be able to pull individual elements from the fetchrow array_ref query and stash them.

      Densely yours, scratch

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://112565]
Approved by root
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2024-04-23 02:02 GMT
Find Nodes?
    Voting Booth?

    No recent polls found