Another way to do it is:
while($ref = $sth->fetchrow_hashref){
do something...
}
-----Original Message-----
From: Andrew Gaffney [mailto:[EMAIL PROTECTED]
Sent: Tuesday, October 28, 2003 10:00 PM
To: [EMAIL PROTECTED]
Subject: Re: DBI
Andrew Gaffney wrote:
> Is there anything wrong with this code?
>
> my $sth = $dbh->prepare($query);
> $sth->execute;
> my $ref = $sth->fetchrow_hashref;
> while($ref) {
> $totalhrs += $ref->{quantity};
> my $tmpdate = $ref->{id};
> $tmpdate =~ s/(\d{4})(\d{2})(\d{2})\d+/$2-$3-$1/;
> print
> "<tr><td>$tmpdate</td><td>$ref->{item}</td><td>$ref->{quantity}</td>";
> $ref = $sth->fetchrow_hashref;
> if($ref->{id} eq $lastinvid) {
> print "<td>$ref->{fname} $ref->{lname}</td></tr>\n";
> $ref = $sth->fetchrow_hashref;
> } else {
> print "<td>N/A</td></tr>\n";
> }
> $lastinvid = $ref->{id};
> }
>
> I get this error over and over again in my Apache log:
>
> DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at
> /home/httpd/cgi-bin/report-myflights.pl line 38.
> [Tue Oct 28 22:13:06 2003] [error] 17457: ModPerl::PerlRun:
> DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at
> /home/httpd/cgi-bin/report-myflights.pl line 38.
>
> It will cycle through the loop like 10 times and then die. I get
> output
> and an Apache error message all in one page. BTW, line 38 is the first
> '$ref = $sth->fetchrow_hashref' in the while loop.
Nevermind, it was my own fault. It was running out of input. I changed that
line to:
if(!($ref = $sth->fetchrow_hashref)) {
last;
}
--
Andrew Gaffney
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]