[Thread Prev][Thread Next]   >Date Index >Thread Index

Re: HTML-Formular CGI/DBI in MySQL DB schreiben - Kopfschmerzen

Bernhard Schmalhofer - Sun Aug 26 13:55:11 2007

Stefan Bauer schrieb:
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.

#!/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;


Hallo Stefan,

Perl lernen ist immer eine gute Idee.

Nun zum Kode:

Die Perl-Fehlermeldung zeigen zwei Probleme auf:
i. die Variablen  $user, $passwort, $datenbank und $treiber
  sind nicht deklariert -> my $user;
ii. Der SQL-String muss korrekt zusammengebaut werden.
   Z.B.

"INSERT INTO spieler ($Feld) VALUES('" . $cgi->param($Feld) . q{')}

$Feld soll ersetzt werden, also braucht man doppelte Anführungszeichen.
'.' fügt Strings zusammen. Eine verbesserte, aber ungetestete, Version mit weiteren Anmerkungen habe ich als Anhang beigefügt.

CU, Bernhard

Attachment: cgi.pl
Description: Perl program


Next: