1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!C:\xampp\perl\bin\perl.exe -w
#
# Dateiname: myscript01.cgi
# Autor: G. Carapoulios
# Benutzung des Perl-Modules DBI (Database Interfaces)
use DBI;
# Datenbank-Verbindung aufbauen
my $dbh = DBI->connect(
'dbi:mysqlPP:database=pizzadb;host=127.0.0.1;port=3306',
'root', '') || die "Kann keine Verbindung zum MySQL-
Server aufbauen: $DBI::errstr\n";
# Datenbank-Verbindung beenden
$dbh->disconnect;
print "Content-type: text/html\n\n";
print "<html><body>Hallo Welt, ich bin MySQL-
fähig!</body></html>";
1
2
3
4
5
6
7
8
9
10
11
12
13
# Datenbank-Verbindung aufbauen
my $dbh = DBI->connect(
'dbi:mysqlPP:database=pizzadb;host=127.0.0.1;port=3306',
'root', '') || die "Kann keine Verbindung zum MySQL-
Server aufbauen: $DBI::errstr\n";
# Datenbank-Verbindung beenden
$dbh->disconnect;
print "Content-type: text/html\n\n";
print "<html><body>Hallo Welt, ich bin MySQL-
fähig!</body></html>";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Datenbank-Verbindung aufbauen
my $dbh = DBI->connect(
'dbi:mysqlPP:database=pizzadb;host=127.0.0.1;port=3306',
'root', '');
my $not_connected = '';
if (! $dbh) {
$not_connected = 'NICHT'; # Zeichenkette falls fehlgeschlagen
}
else {
# Datenbank-Verbindung beenden
$dbh->disconnect;
}
print "Content-type: text/html\n\n";
print "<html><body>
<p>Hallo Welt, ich bin $not_connected MySQL-fähig!</p>
<p>DEBUG: $DBI::errstr</p>
</body></html>";
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
1
2
syntax error at C:/xampp/cgi-bin/myscript01.cgi line 12, near "'$dbi:mysqlPP:database=pizzadb;host=127.0.0.1;port=3306';"
^ dieses Semikolon
1 2 3 4 5 6 7
print eval{ # hier der kritische Code, Aufbau DB-Verbindung || die ... "Content-Type: text/html\n\n"."...HTML..."; } || { "Content-Type: text/plain\n\n".$@; }
Guest janusam besten gleich mit einer richtigen Fehlerbehandlung anfangen:
Code (perl): (dl )1 2 3 4 5 6 7print eval{ # hier der kritische Code, Aufbau DB-Verbindung || die ... "Content-Type: text/html\n\n"."...HTML..."; } || { "Content-Type: text/plain\n\n".$@; }
So kannst Du an jeder Stelle mal einen die Dumper... schmeißen und gucken was los ist.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
package ImgCalMonth; use base main; use warnings; use strict; use Scaliger; sub init{ my $self = shift; $self->nocache; my $d = [localtime]; $self->{STASH}{year} = $d->[5] + 1900; $self->{STASH}{month} = $d->[4] + 1; } sub control{ my $self = shift; return if $ENV{REQUEST_METHOD} ne "POST"; $self->{STASH}{year} = $self->trim($self->param('year')); $self->{STASH}{month} = $self->trim($self->param('month')); my $sca = Scaliger->new( date => sprintf("1.%s.%s", $self->{STASH}{month}, $self->{STASH}{year}) ) or return $self->errmsg("$@"); my $img = $self->param('image') || $self->imgmap_month( $self->{STASH}{month} ); return $self->errmsg('Kein Bild ausgewählt!') if ! $img; # Prüfung jpeg, png return $self->errmsg('Grafikformat nicht unterstützt!') unless $img->{content_type} =~ /jpeg/i; #|| $img->{content_type} eq 'image/png'; # liefert Pfad zur TTF-Datei my $ttf = $self->font( $self->param('ttf') ); $self->{CONTENT} = $self->pdfmonth( month => $self->{STASH}{month}, year => $self->{STASH}{year}, imgtype => 'jpeg', imgfile => $img->{iohandle}, string => 1, ttf => $ttf ) || die "$@\n"; if($self->param('down')){ $self->header( 'Content-Length' => length($self->{CONTENT}), 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'Attachment;filename=sheet.pdf' ); } else{ $self->header( 'Content-Length' => length($self->{CONTENT}), 'Content-Type' => 'application/pdf' ); } } 1;
2016-02-05T10:37:28 MuffiEine Fehlermeldung wär hilfreich.
GwenDragon...
Und ich bin nicht sicher, dass es bei der Angabe des Datenbank-Treibers mysqlPP heißen soll, versuche bitte mal mysql wenn es nicht klappt.
2016-02-07T14:00:09 pqworan lag's?
1 2 3 4
$dbh->do( 'CREATE TABLE test ( id int, name char(80), passwort char(16) );' ) or die $dbh->errstr; # Fehlermeldung bei Fehlschlag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!C:\Perl\bin\perl.exe -w
# Dateiname: myscript04.cgi
use DBI;
$db="pizzadb";
$host='localhost';
$verbindung="dbi:mysqlPP:database=$db;host=$host";
$benutzername="root";
$benutzerpasswort="1234";
@einträge=(
[1001,13,"Salami 2 mal",20.5],
[1002,14"Salami und Schinken",20.6],
[1003,23,"Napoli und Gorgonzola",23.5]
);
my $dbh = DBI->connect(
"$verbindung","$benutzername","$benutzerpasswort") || die
"Database connection nicht erfolgreich!: $DBI::errstr";
my $sql = qq{INSERT INTO pizzabestellungen
(BestellNr,KundenNr,Beschreibung,Preis) values (?,?,?,?)};
my $sth = $dbh->prepare( $sql );
foreach $eintrag(@einträge)
{
($bestellNr,$kundenNr,$beschreibung,$preis)=@$eintrag;
$sth->execute($bestellNr,$kundenNr,$beschreibung,$preis);
}
$sth->finish();
$dbh->disconnect();
print "Content-type: text/html\n\n";
print "<br><br>Tabeellen-INSERTs ausgeführt!</body></html>";
1 2 3 4 5
@einträge=( [1001,13,"Salami 2 mal",20.5], [1002,14"Salami und Schinken",20.6], [1003,23,"Napoli und Gorgonzola",23.5] );
2016-02-07T18:06:43 RaubtierDir könnte im obigen Posting auch auffallen,
a) dass die Farbe der Variable beim ä sich ändert (d.h. ds passiert offenbar irgendwas unerwartetes)
b) dass die Anzahl der Kommata in der Zeile mit "Salami und Schinken" nicht richtig ist.
Zu a): Editoren haben zwar nicht immer recht, was das Syntax-Highlighting angeht, aber doch öfter als man denkt!