2016-05-13 12 views
0

Ich habe alten Code geerbt. Es erhält eine Liste von Kategorien aus einer MySQL-Datenbanktabelle. Ich habe die Aufgabe, ihnen mehrstufige Unterstützung zu geben. Ich habe es fast geschafft, aber aus irgendeinem Grund ist es einfach fehlerhaft, wenn ich die App in Aktion versuche.Warum dieser Fehler weiterhin auftritt?

Der Fehler ist (man kann es auch bei http://detyams.ru/?cat=1 sehen):

kann nicht einen nicht definierten Wert als ARRAY Bezug auf /usr/local/lib/perl5/site_perl/mach/5.18/ verwenden DBI.pm Linie 2074, Linie 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; 
} 

ich habe einige Beispiele nachgeschlagen dort die DBI-Methoden verwenden (wie http://www.perlmonks.org/?node_id=284436#loh), erscheinen alle mit meinem Code in Einklang zu sein.

Antwort

-3

Oh, so, es stellte sich nur heraus, wenn im Falle einer Abfrage Syntaxfehler (WHERE Klausel an falscher Stelle platziert wurde) fetchall_arrayref() scheint kryptische Fehler anstelle des zugrunde liegenden Problems zu melden. Durch Überprüfung von Serverprotokollen herausgefunden.

+0

Wozu dienen diese downvotes? – ZzZombo

Verwandte Themen