in reply to Using Multiple Statements MySQL

Greetings andrew,

Always use strict. Thereafter, I'd prepare the second query outside the while using a different name than your first. With DBI, you can have multiple queries running this way. Also, bind values (also known as placeholders) via DBI are your friend.

use strict; my $sth_null = $dbh->prepare(q{ SELECT id, name FROM category WHERE parent IS NULL }); $sth->execute or die $dbh->errstr; my $sth_parent = $dbh->prepare(q{ SELECT id,name FROM category WHERE parent = ? }); while ( my @slog = $sth_null->fetchrow_array ) { $sth_parent->execute($slog[0]) or die $dbh->errstr; my $rv = $sth_parent->rows; my $subs = $rv; ...

Using placeholders with your prepare and execute statements lets DBI deal with making sure quotes are handled correctly. It also makes for nicer looking code, IMHO.

-gryphon
code('Perl') || die;