2016-05-13 7 views
0

Я унаследовал некоторый старый код. Он получает список категорий из таблицы базы данных MySQL. Мне поручено добавить к ним многоуровневую поддержку. Я почти сделал это, но по какой-то причине это просто ошибки, когда я иду, чтобы попробовать приложение в действии.Почему эта ошибка сохраняется?

Ошибка (вы также можете увидеть его на http://detyams.ru/?cat=1):

Невозможно использовать неопределенное значение в качестве ссылки ARRAY в /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