Как передать пустую переменную из perl cgi в шаблон? - PullRequest
2 голосов
/ 21 января 2020

Я пытаюсь загрузить записи из БД и передать их в шаблон. Если в БД нет записей, я получаю программную ошибку. Если я пытаюсь добавить условие 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...