为什么会出现此错误?

时间:2016-05-13 08:29:20

标签: perl dbi

我继承了一些旧代码。它从MySQL数据库表中获取类别列表。我的任务是为他们添加多级支持。我几乎已经完成了它,但出于某种原因,当我尝试使用该应用程序时,它只会出错。

错误是(您也可以在http://detyams.ru/?cat=1看到):

  

不能在/usr/local/lib/perl5/site_perl/mach/5.18/DBI.pm第2074行第2231行使用未定义的值作为ARRAY参考。

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),所有这些都看起来与我的代码一致。

1 个答案:

答案 0 :(得分:-3)

哦,所以,如果查询语法错误(Button子句放在错误的位置),WHERE似乎报告了神秘错误而不是潜在问题。通过检查服务器日志找到。