This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.
Subject: Re: fetchrow_hashref vs placeholders, binding
From: Tim Bunce <Tim.Bunce@ig.co.uk>
Date: Thu, 10 Aug 2000 21:04:02 +0100
There's little point in using bind_columns if what you want at the
end of the day is a hash ref.
See how fetchrow_hashref does it (using 'perldoc -m DBI'):
sub fetchrow_hashref {
my $sth = shift;
my $name = shift || 'NAME';
my $row = $sth->fetch or return undef;
my %hash;
@hash{ @{ $sth->FETCH($name) } } = @$row;
return \%hash;
}
Do the same but factor out the getting of the names:
my $NAMES = $sth->{NAME_lc};
while (my $row = $sth->fetchrow_arrayref) {
my %hash;
@hash{ @$NAMES } = @$row;
push @found, \%hash;
}
$loop_count = @found;
Or you could just use
$rows = $sth->fetchall_arrayref({});
:-)
Tim.
===
Subject: Re: fetchrow_hashref vs placeholders, binding
From: Tim Bunce <Tim.Bunce@ig.co.uk>
Date: Fri, 11 Aug 2000 09:23:14 +0100
On Fri, Aug 11, 2000 at 01:50:26PM -0500, Neil Lunn wrote:
>
> >From: Tim Bunce <Tim.Bunce@ig.co.uk>
> >
> > $rows = $sth->fetchall_arrayref({});
>
> I didn't know that one! Could have saved me some past grief!
Rereading the docs is recommended. They're far more clearly written
in DBI 1.14 (polished up by our DBI book editor :-).
> One I'm looking at now. What if you wanted to take 12 of the columns and
> store those under a list context
>
> ie:
>
> gross_sale#1 becomes $gross_sale[1] or even $row->{gross_sale}[1]
> or $row->[$x]{gross-sale}[1]
>
> Should this be more of a bind_columns approach?
I probably wouldn't bother unless the number of columns was small and fixed.
But it's still just a few lines of code.
===
Subject: Re: DBD::ODBC problems
From: Tim Bunce <Tim.Bunce@ig.co.uk>
Date: Fri, 11 Aug 2000 18:27:32 +0100
On Thu, Jul 20, 2000 at 02:19:48PM -0600, Aaron Patterson wrote:
>
> I set the trace level to three, and this is what happened:
>
> Segmentation fault (core dumped)
>
> This is the entry in ~/.odbc.ini:
>
> [asuka]
> Driver = /usr/local/lib/libiodbc.so
That's not a driver, it's the driver manager.
Tim.
===