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