【发布时间】:2018-06-25 19:23:58
【问题描述】:
我正在尝试使用 perl dancer 创建一个网站,下面是我的代码。这似乎是正确的,但页面一直在加载并且永远不会在数据库中输入值。当我取消页面时,我收到一条错误消息“request to POST /appform crashed: Can't call method "execute" on an undefined value”。我无法弄清楚代码中有什么问题。如果您有任何其他代码,请提及。
我正在将 SQLite 用于数据库。
有一个数据库campus.db,我正在将值插入student 表中。
post '/appform' => sub {
my $q = CGI ->new;
my $name = $q->param ("firstname");
my $password = $q->param("password");
my $mobile_no = $q->param("mobile");
my $gender = $q->param("gender");
my $email = $q->param("email");
my $address = $q->param("address");
my $sslc = $q->param("SSLC");
my $hsc = $q->param("HSC");
my $cgpa = $q->param("cgpa");
my $languages = $q->param("lang");
my $internships = $q->param("intern");
my $preferred_loc = $q->param("country");
my $sql = "insert into student(name,mobile_no,gender,email,address,sslc,hsc,cgpa,languages,internships,preferred_loc,password,applied_job,company_applied) values ('?','?','?','?','?','?','?','?','?','?','?','?','?','?');";
my $sth = database->prepare($sql);
$sth->execute($name,$mobile_no,$gender,$email,$address,$sslc,$hsc,$cgpa,$languages,$internships,$preferred_loc,$password) or die $sth->errstr;
#$sth->execute();
$sth-> finish;
set_flash('New entry posted!');
redirect '/';
};
【问题讨论】:
-
在
$sth->execute()中使用之前,请仔细检查$sth的内容(从错误信息来看,是undef) -
您应该检查您的数据库连接是否仍然打开。显然,数据库插件有一些钩子可以使用。
https://metacpan.org/pod/distribution/Dancer-Plugin-Database/lib/Dancer/Plugin/Database.pm#HOOKS