无法使用Perl DBI在未定义的值上调用方法“prepare”

时间:2014-01-25 00:36:39

标签: perl dbi

我在Perl模块中有一个sub,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行调用未准定值的方法“prepare”。

 my $sth = $dbh->prepare(qq{

是第511行。

1 个答案:

答案 0 :(得分:5)

您将第一个参数的未定义值传递给validate_extra

最明显的是,如果您的电话只是

,就会发生这种情况
validate_extra();

但是您可能错误地传递了错误的变量,或者原始连接可能已失败但未经检查:

my $dbh = DBI->connect('DBI:mysql:database=mydb', 'user', 'pass', {PrintError => 0});

validate_extra($dbh, $customer, $site);