[
Thread Prev][
Thread Next] >
Date Index
>
Thread Index
Re: HTML-Formular CGI/DBI in MySQL DB schreiben - Kopfschmerzen
Stephen Riehm -
Sun Aug 26 13:36:43 2007
Hi Stefan,
'use strict' is the key here. By specifying use strict, you are
asking perl to prevent common stupid mistakes, like using variables
that haven't been explicitly defined.
$user = "dbi" is using an undefined variable.
To define the variables, you need to use my, our or local, depending
on the situation. ('my' is the right choice 99% of the time because
it restricts the variable to the smallest possible lexicographical
scope (ie: the smallest enclosing block))
ie:
my $user = "dbi";
You're already doing this for most of you variables, you just forgot
the user, password etc.
Steve
On 26.08.2007, at 13:06, Stefan Bauer wrote:
Hallo Liste,
nach langer Zeit, wollte ich mal wieder etwas mit Perl
experimentieren. Hab mir hierzu einschlägige Infos von Renée Bäcker zu
Herzen genommen und versuche gerade die übergebenen Werte aus meiner
HTML-Seite in eine DB zu schreiben.
Die HTML-Datei enthällt Felder wie:
<td style="width: 143px;">Vorname:</td>
<td style="width: 280px;"><input size="30" maxlength="15"
name="Vorname"></td>
</tr>
<tr>
<td style="width: 143px;">Nachname:</td>
<td style="width: 280px;"><input size="30" maxlength="15"
name="Nachname"></td>
</tr>
Die HTML-Datei ruft über einen <form action="comments.pl"
method="post"> Aufruf das CGI-Skript auf:
#!/usr/bin/perl -w
use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
my @Feldnamen = $cgi->param();
use DBI;
$user = "dbi";
$passwort = "dbi";
$datenbank = "dbi";
$treiber = "dbi:mysql:" . $datenbank;
#oeffnen der datenbankverbindung
my $dbh = DBI->connect($treiber, $user, $passwort)
or die "Kann nicht zur DB verbinden: " . DBI->errstr;
# eintragung durchfuehren
foreach my $Feld (@Feldnamen) {
my $sth = $dbh->prepare('INSERT INTO spieler ($Feld)
VALUES('$cgi->param($Feld)')
or die "Kann Daten nicht eintragen: " . $dbh->errstr;
$sth->execute;
}
$dbh->disconnect;
Leider klappt das nicht sonderlich gut und ich bekomme nur:
Global symbol "$user" requires explicit package name sowie einen
Syntax-Fehler in dem SQL-Statement.
Ich hatte hierzu schon die cpan CGI und DBI Page besucht, mir fehlt
aber scheinbar noch etwas das Verständnis.
Für jeden Hinweis dankbar.
Gruß
--
stefan.bauer@plzk.de Josef-Führer-Str. 30
Phone +49 89 26 216 964 80997 München
Mobile +49 179 11 94 767 http://www.plzk.de
Bitte senden Sie mir keine Word- oder PowerPoint-Anhänge.
Siehe http://www.gnu.org/philosophy/no-word-attachments.de.html
Steve
Next:
- Re: HTML-Formular CGI/DBI in MySQL DB schreiben - Kopfschmerzen, (continued)