Я пытаюсь загрузить записи из БД и передать их в шаблон. Если в БД нет записей, я получаю программную ошибку. Если я пытаюсь добавить условие if и определить значения, я снова получаю сообщение об ошибке. Кажется, что есть проблема в l oop или условии if.
Программная ошибка:
HTML :: Template :: param (): попытка установите параметр 'row' со скалярным параметром - это не TMPL_VAR! at / path line 133.
Может ли кто-нибудь помочь избежать ошибки (1-й случай) для 0 записей или с другим подходом?
Этот код работает для> = 1 записей:
my $sql2="select column1, column2, column3, column4, column 5 FROM TABLE;";
my $dbh = DBI->connect($dsn,$username, $password);
my $sth = $dbh->prepare($sql2);
$sth->execute() or die $DBI::errstr;
my $row;
push @{$row}, $_ while $_ = $sth->fetchrow_hashref();
my $template = HTML::Template->new(filename => 'entries.tmpl');
$template->param(ROW => $row);
Этот код не работает:
my $count;
my $sql1="SELECT count(*) FROM TABLE;";
my $dbh = DBI->connect($dsn,$username, $password);
my $sth = $dbh->prepare($sql1);
$sth->execute() or die $DBI::errstr;
$count = $sth->fetchrow_array();
if ($count == 0)
{
my $row;
@row=("There are no entries",0,0,0,0);
}
else {
my $sql2="select column1, column2, column3, column4, column 5 FROM TABLE;";
my $dbh = DBI->connect($dsn,$username, $password);
my $sth = $dbh->prepare($sql2);
$sth->execute() or die $DBI::errstr;
my $row;
push @{$row}, $_ while $_ = $sth->fetchrow_hashref();
}
my $template = HTML::Template->new(filename => 'entries.tmpl');
$template->param(ROW => $row);