2016-05-13 51 views
0

我繼承了一些舊代碼。它從MySQL數據庫表中獲取類別列表。我負責爲他們添加多層次的支持。我已經完成了它,但由於某種原因,當我嘗試應用程序時,它只是出錯。爲什麼這個錯誤一直在發生?

錯誤的是(你也可以看到它在http://detyams.ru/?cat=1):

不能使用一個未定義的值作爲/usr/local/lib/perl5/site_perl/mach/5.18/數組引用DBI.pm線2074,線2231

sub catlist 
{ 
    my $self=shift; 
    state $sth=$self->db->prepare(q/SELECT c.cat_id,c.cat_name,COUNT(pn.p_id) as cnt from category c 
    LEFT JOIN price_new pn ON (pn.cat_id=c.cat_id) GROUP BY pn.cat_id WHERE c.parent_id=?/); 
    $sth->execute(0); 
    my @catlist=$sth->fetchall_arrayref({}); # <- this call leads to the failure in the deep of DBI code. 
    foreach my $item (@catlist) 
    { 
     $sth->execute($item->{cat_id}); 
     $item->{children}=$sth->fetchall_arrayref({}); 
    } 
    return @catlist; 
} 

我擡起頭來使用DBI方法的一些具體的例子在那裏(如http://www.perlmonks.org/?node_id=284436#loh),似乎都與我的代碼一致。

回答

-3

哦,所以,它只是變成了如果查詢語法錯誤的情況下(WHERE條款被放置在錯誤的位置)fetchall_arrayref()出現報告,而不是根本問題神祕的錯誤。通過檢查服務器日誌發現。

+0

這些downvotes是什麼? – ZzZombo

相關問題