#!/usr/bin/perl -w
#!C:/xampp/perl/bin/perl -w
#
# This file is part of a perl tutorial
#
# (C) Copyright 2006 Hans Kern
#
# File name : pldemo23.cgi
# Created by : Hans Kern
# Creation date: 21.7.2006
#
use strict;
use DBI ;
use CGI ;
# Durch strict erzwungene Auflistung verwendeter Variablen, alphabetisch
my $database;
my $dbh;
my $dsn;
my $html;
my $i;
my $password;
my $query;
my @row;
my $sth;
my $table;
my $username;
# Neues CGI-Objekt anlegen, dabei wird die Eingabe
# (egal ob via POST oder GET Methode) bearbeitet und
# in dem neuen Objekt (hier $query) gespeichert.
$html = new CGI;
# Erzeuge HTTP-Header (Content-type und so ...)
print $html->header;
# Erzeuge HTML-Document Header
print $html->start_html(-title=>'Testseite für CGI via Perl',
-author=>'Hans Kern',
-BGCOLOR=>'white');
# Datenbank oeffnen
$dsn = "DBI:mysql:sample:localhost"; #data set name
$username = "root";
$password = "";
print "
Stelle Verbindung für Benutzer $username her!
\n";
$dbh = DBI->connect ($dsn, $username, $password,
{ RaiseError => 1, PrintError => 0, AutoCommit => 1 }); # data bank handle
print "Mach was mit den über das Statementhandle zugänglichen Dingen! Zum Beispiel:
\n";
print "Welche Datenbanken gibt es?
\n";
$query = "show databases"; # Die Variable $query enthaelt einen SQL-Befehl!
$sth = $dbh->prepare($query); # sth = statement handle
$sth->execute() or die "Fehler!"; # Fuehre den SQL-Befehl aus!
while ( @row = $sth->fetchrow_array ) { # Hole Zeile fuer Zeile aus der Tabelle!
for ($i = 0; $i < @row; $i++) { # Mach was mit allen Spalten!
print "i: $i = $row[$i]
\n"; # Oops! Die Zeilen haben nur eine Spalte!
$database = $row[0]; # Merk dir die letzte Datenbank!
}
}
$sth->finish(); # Gib statement handle zurueck!
print "Welche Tabellen hat die Datenbank $database?
\n";
$sth = $dbh->prepare("show tables from $database"); # Ohne String fuer den SQL-Befehl
$sth->execute() or die "Fehler!"; # Fuehre den SQL-Befehl aus!
while ( @row = $sth->fetchrow_array ) {
for ($i = 0; $i < @row; $i++) {
print "i: $i = $row[$i]
\n"; # Oops! Die Zeilen haben nur eine Spalte!
$table = $row[0]; # Merk dir die letzte Tabelle!
}
}
$sth->finish(); # Gib statement handle zurueck!
print "Welche Spalten hat die Tabelle $table der Datenbank $database?
\n";
$query = "show columns from $table from $database";
$sth = $dbh->prepare($query);
$sth->execute() or die "Fehler!";
while ( @row = $sth->fetchrow_array ) {
for ($i = 0; $i < @row; $i++) {
print "i: $i = $row[$i]
\n";
}
}
$sth->finish(); # Gib statement handle zurueck!
# Erzeuge HTML-Footer
print $html->end_html();