Mailinglisten-Archive |
Hi,
Walter Mantsch <w.mantsch_(at)_madsack.de> schrieb mir:
> Wie bekomme ich Perl und MySQL zusammen?
> Kann mir jemand ein einfaches Beispiel zeigen?
#!/usr/bin/perl -w
use CGI ':standard';
use DBI;
# Datenbank-Variablen
my $dbhost = 'hostname';
my $dbase = 'database';
my $dbuser = 'username';
my $dbpass = 'password';
my $dbtable = 'tabelle';
# Eintragen eines Datensatzes (wird von einem HTML-Form eingelesen
# und mittels param('param') übergeben
my $dbh = &connect($dbase,$dbuser,$dbpass,$dbhost,$dbtable);
my _(at)_COLUMNS = get_columns($dbh,$dbtable);
my %param = map(($_ => param $_), param);
$statement = 'INSERT INTO ' . $dbtable . '('
. join(', ', _(at)_COLUMNS)
. ') VALUES ('
. join(', ', ('?')x_(at)_COLUMNS)
. ');';
$dbh->do($statement, undef, _(at)_param{_(at)_COLUMNS})
or die "Couldn't insert: ", $dbh->errstr, "\n";
disconnect($dbh);
# Auslesen der Datensätze
my $dbh = &connect($dbase,$dbuser,$dbpass,$dbhost,$dbtable);
my _(at)_COLUMNS = get_columns($dbh,$dbtable);
$ary_ref = get_data($dbh,$dbtable);
disconnect($dbh);
# Output der Datensätze im Browser
print header,
start_html(-TITLE=>'Die aktuellen Treffer.',
-BACKGROUND=>$background,
-TEXT=>'black',
-LINK=>'blue',
-ALINK=>'blue',
-VLINK=>'blue'
),
table({BORDER=>'0',
HEIGHT=>'100%',
WIDTH=>'100%'
},
Tr td{ALIGN=>'center'},
table(
{BORDER=>'1', WIDTH=>'100%'},
Tr
[
th([
_(at)_COLUMNS
]),
map {
my $row = $_;
td [
map $row->{$_}, _(at)_COLDATA
]
} _(at)_$ary_ref
],
),
end_html;
exit;
sub connect {
my ($dbase, $dbuser, $dbhost, $dbtable) = _(at)__;
DBI->connect("DBI:mysql:database=$dbase",
$dbuser,
$dbpass,
)
or die "Cannot connect to database", $DBI::errstr
}
sub disconnect {
shift->disconnect
}
sub get_columns {
my ($dbh, $dbtable) = _(at)__;
my $COLUMNS = $dbh->selectall_arrayref("show columns from " . $dbtable)
or die "Fehler beim Ermitteln der Spaltennamen\n", $dbh->errstr;
map $_->[$[], _(at)_$COLUMNS;
}
sub get_data {
my ($dbh, $dbtable) = _(at)__;
my $sth = $dbh->prepare('SELECT * FROM $dbtable')
or die $dbh->errstr;
$sth->execute;
$sth->fetchall_arrayref({})
or die $sth->errstr;
}
In der Hoffnung, Dir geholfen zu haben,
Thomas Gericke
--
Thomas Gericke - netbits computer solutions - gericke_(at)_netbits.de
Schumacher & Gericke GdbR - http://www.netbits.de/
php::bar PHP Wiki - Listenarchive