Way oversimplified example:
# Get Some data
$query = $db->prepare(qq{
select * from my_table where id = "Some Value"
});
$query->execute;
# Iterate through the results
if ( *THE QUERY HAS RETURNED A RESULT* ) {
print "Here is list of IDs ";
while ($query_data = $query->fetchrow_hashref) {
print "$query_data->{id}";
}
};
Looking for the code for "THE QUERY HAS RETURNED A RESULT" up there. I'd like to avoid using count(*) in my SQL if possible, since that will require a "group by".
my $sth = $dbh->prepare($stmt);
$sth->execute();
my $header = 0;
while (my $row = $sth->fetchrow_hashref) {
print "Here is list of IDs:\n" if !$header++;
print "$row->{id}\n";
}
Alternative:
my $sth = $dbh->prepare($stmt);
$sth->execute();
my $row = $sth->fetchrow_hashref;
print "Here is list of IDs:\n" if $row;
while ($row) {
print "$row->{id}\n";
$row = $sth->fetchrow_hashref;
}
Simpler code at the expense of memory:
my $ids = $dbh->selectcol_arrayref($stmt);
if (@$ids) {
print "Here is list of IDs:\n";
print "$_\n" for @$ids;
}
Looks to me like your check for the query result is redundant. Your while loop will evaluate 'false' if there is no row to fetch.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With