"rows"
$rv = $sth->rows;
Returns the number of rows affected by the last row affecting com-
mand, 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.
One alternative method to get a row count for a "SELECT" is to exe-
cute a "SELECT COUNT(*) FROM ..." SQL statement with the same "..."
as your query and then fetch the row count from that.
####
my $sql = {
SELECT count(*)
FROM patient_data
WHERE name = ?
};
my $sth = $dbh->prepare($sql);
$sth->execute($name);
my ($count_rows) = $sth->fetchrow_array();
####
my $sql = {
SELECT name
FROM patient_data
WHERE name = ?
};
my $sth = $dbh->prepare($sql);
$sth->execute($name);
my $count_rows = 0;
while (my ($name) = $sth->fetchrow_array()) {
### do something with $name here ###
$count_rows += 1;
}