Schrift
[thread]3391[/thread]

$sth->fetchrow: will nicht so wie ich (Seite 2)



<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
Tom
 2004-12-18 17:47
#35855 #35855
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=steffenw,04.01.2004, 20:57]Man kann auch
Code: (dl )
1
2
3
foreach my $ref ( @{ $sth->fetchall_arrayref } ) {
print STDERR "KEY: $ref->{keyword} => TITEL: $ref->{titel}\n";
}
schreiben.[/quote]
Bekomme dann aber immer folgende Fehlermeldung:
Quote
Can't coerce array into hash at C:\Projekte\Eventmanager\mysql\smilie.cgi line 77.


Hier der Code

Code: (dl )
1
2
3
foreach my $ref ( @{ $sth->fetchall_arrayref } )
{
push @cols, {IMAGES_PATH => $images_path,IMAGESRC=> $ref->{code}};


Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Strat
 2004-12-19 01:27
#35856 #35856
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
und welche zeile ist zeile 77?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Dubu
 2004-12-19 02:14
#35857 #35857
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ich glaube auch nicht, dass der Code so korrekt ist. Entweder will man die Spalten mit ihren Namen ansprechen und benutzt fetchall_hashref oder man bekommt die Spalten in einem Array mit fetchall_arrayref. Letzteres liefert naemlich ein Array von Arrayreferenzen, kein Array von Hashreferenzen.
Tom
 2004-12-19 17:31
#35858 #35858
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Strat,19.12.2004, 00:27]und welche zeile ist zeile 77?[/quote]
Code: (dl )
  push @cols, {IMAGES_PATH => $images_path,IMAGESRC=> $ref->{code}};


Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
renee
 2004-12-19 19:53
#35859 #35859
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
schonmal:
Code: (dl )
1
2
3
while (my $hashref = $sth->fetchrow_hashref){
push @cols, {IMAGES_PATH => $images_path,IMAGESRC=> $hashref->{code}};
}

versucht??\n\n

<!--EDIT|renee|1103478844-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tom
 2004-12-19 20:11
#35860 #35860
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, funktioniert aber nur bedingt, denn in meinem Fall brauche ich eine Foreach -Schleife und keine While-Schleife.

Mit einer Forecach-Schleife wird nichts angezeigt.

Danke

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Dubu
 2004-12-19 20:26
#35861 #35861
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wie schon oben geschrieben: fetchall_hashref statt fetchall_arrayref.
Tom
 2004-12-19 20:39
#35862 #35862
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Dubu,19.12.2004, 19:26]Wie schon oben geschrieben: fetchall_hashref statt fetchall_arrayref.[/quote]
Dann bekomme ich folgende Fehlermeldung

Quote
DBI fetchall_hashref: invalid number of parameters: handle + 0
Usage: $h->fetchall_hashref($key_field) at C:\Projekte\Eventmanager\mysql\smilie.cgi line 75.



Code: (dl )
foreach my $ref ( @{ $sth->fetchall_hashref } )


Habe statt dem @ auch % probiert ist aber der gleiche Fehler

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Dubu
 2004-12-19 23:01
#35863 #35863
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Hmpf. Ja, sorry, mein Fehler. Ich sollte meinen Code wirklich testen, bevor ich so einen Unsinn poste (ich benutze die fetchall_* Routinen sonst nie).

fetchall_arrayref war doch die richtige Routine, allerdings braucht sie offensichtlich als Argument eine Hashreferenz, damit ein Array of Hashes zurueckgeliefert wird und kein Array of Arrays, also:
Code: (dl )
1
2
3
foreach my $ref ( @{ $sth->fetchall_arrayref({}) } ) {
 print STDERR "KEY: $ref->{keyword} => TITEL: $ref->{titel}\n";
}


Allerdings wundert mich wirklich, was du fuer einen Code hast, in dem du unbedingt eine foreach-Schleife statt einer while-Schleife benoetigst?! Was meinst du mit "Mit einer Forecach-Schleife wird nichts angezeigt"?
Tom
 2004-12-20 17:20
#35864 #35864
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Dubu,19.12.2004, 22:01]Hmpf. Ja, sorry, mein Fehler. Ich sollte meinen Code wirklich testen, bevor ich so einen Unsinn poste (ich benutze die fetchall_* Routinen sonst nie).[/quote]
Schon OK kann ja mal passieren ;)

Quote
Code: (dl )
1
2
3
foreach my $ref ( @{ $sth->fetchall_arrayref({}) } ) {
print STDERR "KEY: $ref->{keyword} => TITEL: $ref->{titel}\n";
}


Werde ich testen

Quote
Allerdings wundert mich wirklich, was du fuer einen Code hast, in dem du unbedingt eine foreach-Schleife statt einer while-Schleife benoetigst?!


HTML::Template Loop

Code von esskar

Quote
Was meinst du mit "Mit einer Forecach-Schleife wird nichts angezeigt"?


Das bezog sich auf den Code von renee, wenn ich den so nehme und das while durch foreach ersetze wird nichts angezeigt.

Danke

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2004-01-03 16:31.