SPUG:using DBI::fetchrow_array(); to load another array

Chris Wilkes cwilkes-spug at ladro.com
Mon Feb 10 07:04:04 CST 2003


On Mon, Feb 10, 2003 at 03:21:18AM -0800, Ramon Hildreth wrote:
> 
> I am using DBI to connect to my database and I am trying to load the
> contents of a call to fetchrow_array() into an array. 
> 
> @the_array = $sth->fetchrow_array();
> gives me only the first row.
> 
> makes sense after I looked at it, since I am using it in a scalar
> context.

But you're getting back an array of the columns of that row, nothing
scalar about that.  The operative word here is "fetchROW" ;)

> but how then would I get it to work 'array to array' so to speak.

Later on in the perldoc for DBI it has
	$ary_ref  = $sth->fetchall_arrayref;
which I think is what you're thinking about.  To get it into one huge
array you can do this:
	my @lottarows = @{$sth->fetchall_arrayref};
Which gives you an array of 1..n entries, with each entry being a 1..m
columns of your query.

Watch out as that could be a large array.  You're probably better off
with something like this:
	while (my @columns = $sth->fetchrow_array()) {
	  print Dumper(@columns);
	}

Chris



More information about the spug-list mailing list