diff --git a/C4/Reports/Guided.pm b/C4/Reports/Guided.pm index 4ff311edb8..6f77f5dfe9 100644 --- a/C4/Reports/Guided.pm +++ b/C4/Reports/Guided.pm @@ -431,10 +431,13 @@ sub nb_rows { }); $sth->execute(); - my $results = $sth->fetch; - my $n = $results ? $results->[0] : 0; - return $n; + if ( $sth->errstr ) { + return 0; + } + else { + return $sth->fetch->[0]; + } } =head2 execute_query diff --git a/t/db_dependent/Reports/Guided.t b/t/db_dependent/Reports/Guided.t index a2c90eee2f..e0aacfd29e 100644 --- a/t/db_dependent/Reports/Guided.t +++ b/t/db_dependent/Reports/Guided.t @@ -413,7 +413,7 @@ $schema->storage->txn_rollback; subtest 'nb_rows() tests' => sub { - plan tests => 1; + plan tests => 3; $schema->storage->txn_begin; @@ -430,6 +430,17 @@ subtest 'nb_rows() tests' => sub { is( $nb_rows, $items_count, 'nb_rows returns the right value' ); + my $bad_query = q{ + SELECT * items xxx + }; + + warning_like + { $nb_rows = nb_rows( $bad_query ) } + qr/^DBD::mysql::st execute failed:/, + 'Bad queries raise a warning'; + + is( $nb_rows, 0, 'nb_rows returns 0 on bad queries' ); + $schema->storage->txn_rollback; };