如何将空变量从perl cgi传递到模板?

如何将空变量从perl cgi传递到模板?,perl,cgi,Perl,Cgi,我试图从数据库加载条目并将它们传递到模板。 如果数据库中没有条目,我会得到一个软件错误。 如果我尝试添加一个If条件并定义值,我会再次出现错误。 似乎循环或if条件中存在问题 软件错误: HTML::Template::param():尝试使用标量设置参数“行” -参数不是TMPL_变量!在/路径第133行 是否有人可以帮助避免0条目的错误(第一种情况)或使用其他方法 此代码适用于>=1个条目: my $sql2="select column1, column2, column3, column

我试图从数据库加载条目并将它们传递到模板。 如果数据库中没有条目,我会得到一个软件错误。 如果我尝试添加一个If条件并定义值,我会再次出现错误。 似乎循环或if条件中存在问题

软件错误:

HTML::Template::param():尝试使用标量设置参数“行” -参数不是TMPL_变量!在/路径第133行

是否有人可以帮助避免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);

如果出现错误,请共享消息。还可以在提供的代码中共享模板,您使用
fetchrow\u hashref
返回hashref。在第二段代码中使用
@row=(“并没有条目”,0,0,0)它是一个数组,但不是hashref。我猜
$template->param(ROW=>$ROW)
在以意外形式获取数据时会混淆。您的两个变量
$ROW
都在
if
else
块中按词汇声明。当您尝试将
$row
(第三个$row变量)传递给模板时,它们将超出范围。始终以
use strict开始您的代码;使用警告