Если ваш запрос не-SELECT (например, ОБНОВЛЕНИЕ или УДАЛЕНИЕ), тогда вы можете воспользоваться строками :
my $query = "..."; # your query
my $sth = $dbh->prepare($query);
$sth->execute();
print "Number of rows affected: " . $sth->rows . "\n";
строк возвращает количество строк, затронутых последним запросом или -1 в случае ошибки.Тем не менее, по замыслу, вы не можете полагаться на строки для оператора SELECT.
Обратите внимание, что для запросов, отличных от SELECT, также execute возвращаетколичество затронутых рядов.Однако, если ни одна строка не затронута, тогда execute возвращает "0E0" (который в любом случае Perl должен трактовать как 0 ).
my $query = "..."; # your query
my $sth = $dbh->prepare($query);
my $numrows = $sth->execute();
print "Number of rows affected: " . $numrows . "\n";
Если вместо этого ваш запрос представляет собой SELECT , то вы не можете полагаться на строк .
Однако вы можете сделать либо:
my $query = "SELECT COUNT(*) AS rows FROM ... WHERE ...";
my $numrows = $dbh->selectrow_array($query, undef);
print "Number of rows: " . $numrows . "\n";
Или, аналогично:
my $query = "SELECT COUNT(*) AS rows FROM ... WHERE ...";
my $numrows = $dbh->selectall_arrayref($query, { Slice => {} });
print "Number of rows: " . @$numrows[0]->{rows} . "\n";