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