in reply to how to determine of fetchrow_Arrayref is empty?

And while we're exploring the possibilities presented by TIMTOWTDI, try reading perldoc DBI for the ->rows() method, as well. You might find it helpful. I seem to remember some caveat about certain conditions under which ->rows() wasn't useful in the perldoc. But the details escape me now. From memory, and untested, it would go something like this:

if(!$sth->rows()){ print STDERR "sorry no matches found\n"; } else { # do something useful with data }
-- Hugh

if( $lal && $lol ) { $life++; }

Replies are listed 'Best First'.
Re^2: how to determine of fetchrow_Arrayref is empty?
by ysth (Canon) on May 27, 2008 at 09:30 UTC
    DBI:
      $rv = $sth->rows;

    Returns the number of rows affected by the last row affecting command, or -1 if the number of rows is not known or not available.

    Generally, you can only rely on a row count after a non-SELECT execute (for some specific operations like UPDATE and DELETE), or after fetching all the rows of a SELECT statement.

    For SELECT statements, it is generally not possible to know how many rows will be returned except by fetching them all. Some drivers will return the number of rows the application has fetched so far, but others may return -1 until all rows have been fetched. So use of the rows method or $DBI::rows with SELECT statements is not recommended.

    So it should work to do
    if (! $sth->rows) { print "sorry, no matching data" }
    after the while loop.