2014-01-25 70 views
0

我有一個Perl模塊中的一個子上的不定值「準備」,Advancer.pm:無法調用使用Perl DBI

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 )我得到一個錯誤:

Can't call method "prepare" on an undefined value at Advancer.pm line 511.

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

是線路511

+1

什麼對'validate_extra'的調用看起來像?乍一看,它看起來像是無法傳遞值或未能傳遞定義的數據庫句柄。您是否驗證過數據庫連接已成功完成? – rutter

回答

4

你傳遞一個未定義值的第一個參數validate_extra

最明顯的是,如果你的電話是剛

validate_extra(); 

這會發生,但你可能會錯誤地傳遞了錯誤的變量,或者是原來的連接出現故障,但走了選中:

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

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