我在perl模块中有一个子,advancer.pm:
sub validate_extra {
my ($dbh, $customer_id, $site) = @_;
my $sth = $dbh->prepare(qq{
SELECT key
FROM master
WHERE
code = ?
AND set = ?
AND type_id = 2
ORDER BY customer_id DESC, site DESC
LIMIT 1
});
$sth->execute($customer_id, $site);
但是,当我从测试(.t)调用此模块时,我会收到一个错误:
无法在Advancer.pm第511行上的未定义值称为"准备"方法。
my $sth = $dbh->prepare(qq{
是第511行。
您将第一个参数的未定义值传递给 validate_extra
。
最明显的是,如果您的电话只是
validate_extra();
,但您可能错误地通过了错误的变量,或者原始连接失败但没有选中:
my $dbh = DBI->connect('DBI:mysql:database=mydb', 'user', 'pass', {PrintError => 0});
validate_extra($dbh, $customer, $site);