无法使用 Perl DBI 对未定义的值调用方法 "prepare"



我在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);

最新更新