[ic] Array from database

Mike Heins mikeh@minivend.com
Tue, 19 Dec 2000 13:03:01 -0500


Quoting Kaare Rasmussen (kar@webline.dk):
> I'd like to fill an array with the values of my order lines. After messing 
> around for some time, I'm in doubt.
> 
> Seems to be best to do in perl. But all options seem a bit flawed, so which 
> is best?
> - $tag->data can only handle one row (??)
> - %db may be better, but the key has to be named "code" (??)
> - %sql gives you all the power, but is more complex.
> - More?

Why do you say that $Db{table} is not it?

	[perl tables=products]
		my $db = $Db{products} 
			or return "NO products?";
		my $q = "select foo, bar from products where buz = 'baz'";
		my $ary = $db->query($q)
			or die "query failed";
		foreach $row (@$ary) {
			($foo, $bar) = @$row;
			## Your code here
		}
	[/perl]

If you want to get back a hash with name pointers and an array with field
names, you can call it in array context:

	my ($ary, $name_hash, $name_ary) = $db->query($q)
		or die "query failed";
	$out .= "index of foo is $name_hash{foo}\n";
	$out .= "field name at index 1 is $name_ary[1]\n";

	my $rc = scalar @$ary;
	$out .= "Query returned $rc rows";

Didn't I document this? I thought I did.

-- 
Akopia, Inc., 131 Willow Lane, Floor 2, Oxford, OH  45056
phone +1.513.523.7621 fax 7501 <heins@akopia.com>

Function in chaos, finish in style. -- Unknown