Hallo zusammen. War 8 Tage elend krank, 40,6 Fieber, dadurch ist leider der alte Thread schon archiviert.
http://forum.de.selfhtml.org/archiv/2007/1/t143537/#m931887
Ich versuche anzuknüpfen:
Wir waren dabei zu klären wie man Methoden einbindet. Zugegeben etwas verwirrend für mich, da ich nach meinem Verständnis Methoden bisher also funktions-orientiert eingesetzt habe. Natürlich weiss ich was über Methoden, ich war nur so hundeelend krank dass ich gar nichts mehr wusste.
http://perldoc.perl.org/CGI.html#USING-THE-FUNCTION-ORIENTED-INTERFACE
Zumindest steht dort, dass Z.B: use CGI qw/:standard/;
zumindest auch die Methode param einbindet, die Objekt-Orientierte Variante hat mich verwirrt, da nie verwendet.
Nun zur DBI:
Ich öffne die Verbindung zur Datenbank und generiere eine einfache Abfrage.
my $abfrage=$dbh->prepare('SELECT * FROM stammdaten') || die $DBI::errstr; $abfrage->execute; my @ergebnis=$abfrage->fetchrow_array; $abfrage->finish;
Klappt gut, ich kann die Daten ausgeben.
Dann versuche ich eine einfache Änderung des Datenbankfeldes Namens vorname in meiner Test-Tabelle stammdaten bei datensatz kdnr 100.
my $upd=$dbh->prepare("UPDATE stammdaten SET vorname=\"$vorname\" WHERE kdnr=100") || die $DBI::errstr; $upd->execute; $upd->finish;
Den parameter lese ich vorher wie immer so ein:
my $vorname=param("vorname");
Die Änderung des Feldes vorname wird korrekt durchgeführt, es erscheint auch keine Fehlermeldung.
Nun füge ich use strict;
hinzu. Dies führt jetzt zu folgender Fehlermeldung:
Global symbol "@localhost" requires explicit package name at testosteron.pl line 17.
Ohne strict läufts, also sagt mein innerer Schweinehund, dann lass halt strict weg. Der kleine Mann im Ohr sagt aber, geh der Sache auf den Grund.
Den Aufruf zur Verbindung:
my $dbh=DBI->connect("DBI:mysql:myBase","myBase@localhost",'aha') or die "Fehler bei Datenbankverbindung: $!";
myBase@localhost kann ich aber nicht anders gestalten, das @ kann ich nicht maskieren, da sonst natürlich die Verbindung nicht klappt.
Nun, wo liegt jetzt der Fehler ?
Grüsse Gustl