@@ -, +, @@ --- C4/Reports/Guided.pm | 9 ++++++--- t/db_dependent/Reports/Guided.t | 13 ++++++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) --- a/C4/Reports/Guided.pm +++ a/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 --- a/t/db_dependent/Reports/Guided.t +++ a/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; }; --