Schrift
[thread]11700[/thread]

Datenbankfehler: Not a Hash-Reference at ...



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
tsy
 2008-04-24 14:51
#108810 #108810
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich habe folgendes Problem:
ich benutze DBI:mysql und möchte einen Benutzer der Datenbank hinzufügen.
die problematischen Zeilen sehen wie folgt aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub updateUser{
        my $self = shift;
        my $pRef = shift;

        my $dbh = $self->{'dbh'};
        my $count;
        my @query_result;

        eval{
                $count = $dbh->do("
                UPDATE smart_model.benutzer
                SET
                 nachname = '$pRef->{'nachname'}', vorname = '$pRef->{'vorname'}',
                 telnr = '$pRef->{telnr}',sprache = '$pRef->{'sprache'}', aktiv = '$pRef->{'aktiv'}',
                 permission = $pRef->{'permission'}, lastLogin = $pRef->{'lastLogin'}
                 WHERE id = '$pRef->{'id'}';");
        };

in $@ bekomme ich dann immer den im Betreff genannten Fehler.
Ich übergebe der Funktion eine Referenz auf die Klasse Benutzer (darauf zeigt dann pRef). Was läuft falsch?

Viele Grüße,

tsy
Linuxer
 2008-04-24 15:04
#108811 #108811
User since
2006-01-27
3871 Artikel
HausmeisterIn

user image
Hi,

keine Ahnung was die Klasse Benutzer beinhalten soll.

Mach doch mal direkt nach der Befüllung von $pRef ein
Code (perl): (dl )
warn "pRef: ", ref( $pRef )," / ", $pRef, $/;

und schau dann auf der Konsole oder im Error_log nach, was $pRef denn für eine Referenz/Daten beinhaltet....
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
tsy
 2008-04-24 15:13
#108812 #108812
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hi, pRef bzw die Benutzer-Klasse beinhaltet alle die Schlüssel/Wert-Paare im INSERT-Statement.

Das warn-Statement bringt mir
Code: (dl )
pRef: REF / REF(0x182f1d0)
Linuxer
 2008-04-24 15:20
#108813 #108813
User since
2006-01-27
3871 Artikel
HausmeisterIn

user image
$pRef enthält keine Hash-Referenz (HASH) sondern eine Referenz auf eine Referenz (REF)... Damit ist klar, dass er da nicht als Hash dereferenzieren mag.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
nepos
 2008-04-24 15:46
#108815 #108815
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du solltest btw. Platzhalter benutzen und nicht die Werte direkt ins SQL-Statement einbauen.
renee
 2008-04-24 15:51
#108816 #108816
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dazu auch: Wiki:Artikel
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/
renee
 2008-04-24 15:52
#108817 #108817
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@tsy: Wie übergibst Du $pRef an die Subroutine?
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/
Struppi
 2008-04-24 16:29
#108821 #108821
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
und wozu das ganze in einem eval Block?
tsy
 2008-04-24 17:33
#108824 #108824
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
@Linuxer: danke! Es funktioniert jetzt! :-)
@nepos & renee: Danke für den Hinweis, ich werde es entsprechend umstricken!

Ich habe pRef als referenz übergeben - das war der Fehler - eigentlich ganz einfach, aber manchmal sieht man den Wald vor lauter Bäumen nicht. ;-)

@Struppi: Ich fange danach $@ ab um zu sehen, ob es einen Fehler gibt.

Danke euch allen für die Hilfe!

Viele Grüße,

tsy
Struppi
 2008-04-25 11:19
#108846 #108846
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Das ist doch Unsinn, ich nehm an du benutzt DBI das hat doch eine Fehlerschnittstelle, ansonsten würde eval nur Sinn machen, wenn du mit einem Syntaxfehler oder sowas rechnest.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-04-24 14:51.