#! /usr/bin/perl
use strict;
use warnings;
use DBI;
my $driver = 'mysql';
my $database = 'yoda';
my $hostname = 'localhost';
my $port = 3306;
my $user = 'yoda';
my $password = 'geheim';
print "Content-type: text/html
SQL-Demo
SQL-Demo
";
# Spalte Uebergabeparameter auf:
my $parameter;
if ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read (STDIN, $parameter, $ENV{'CONTENT_LENGTH'});
}
else
{
$parameter = $ENV{'QUERY_STRING'};
}
my %uebergabe;
for my $paar (split (/&/, $parameter))
{
(my $name, my $wert) = split (/=/, $paar);
$wert =~ tr/+/ /;
$wert =~ s/%(..)/pack ("C", hex ($1))/eg;
$uebergabe{$name} = $wert;
}
my $abfrage = $uebergabe{'abfrage'};
if ($abfrage eq '')
{
print '
';
exit;
}
print "Abfrage: $abfrage
\n";
my $fehler;
my $connect_params = "DBI:$driver:database=$database;host=$hostname;port=$port";
my $dbh = DBI -> connect ($connect_params, $user, $password);
if ($fehler = $dbh -> err)
{
print "Verbindungsfehler: $fehler\n";
exit;
}
my $sth = $dbh -> prepare ($abfrage);
$sth -> execute;
if ($fehler = $sth -> err)
{
print "Ausfuehrungsfehler: $fehler\n";
exit;
}
print " \n";
my @spaltennamen;
while (my $zeilenreferenz = $sth -> fetchrow_hashref)
{
my $spalte;
if (!@spaltennamen)
{
@spaltennamen = keys (%{$zeilenreferenz});
print " \n";
foreach $spalte (@spaltennamen)
{
print ' ', $spalte, " | \n";
}
print "
\n";
}
print "
\n";
foreach $spalte (@spaltennamen)
{
print ' ', $zeilenreferenz -> {$spalte}, " | \n";
}
print "
\n";
}
$sth -> finish;
$dbh -> disconnect;
print "