package database; use strict; use warnings; use DBI; our $con = "DBI:mysql:$db"; our $user = "root"; our $passwort = "pwd"; my $db; sub open_db() { unless($db) { $db=DBI->connect($con,$user,$passwort) || die "DB connection not made: $DBI_errstr"; } return $db; } sub close_db() { return unless($db); $db->disconnect; $db=undef; } sub insert_tab { my $table = shift; my $values = shift; my $primary_key = shift; # $table und $values müssen vorhanden sein! return 0 unless($table and $values); # $values muss ein hash sein! return 0 if(ref($values) ne 'HASH'); # INSERT ----------- # Keys und Values separieren my @vals; my @keys; while (my ($k,$v)=each(%$values)) { push(@vals,$k); push(@keys,$v); } my $insert_keys=join(', ',@keys); # Für jeden wert ein '?' my $insert_vals=join(', ',map{'?'}@keys); my $dbh=open_db(); my $sth = $dbh->prepare(qq{ INSERT INTO $table ($fieldlist) VALUES ($fieldvalues) }); my $ok = $sth->execute(@$values); $sth->finish(); # einfügen Erfolgreich return 1 if($ok); # einfügen war nicht erfolgreich aber kein Primärer Key wurde definiert return 0 unless(defined($primary_key)); # UPDATE --------- # ist der Primäre Key aufgeführt? return 0 unless(exists($values->{$primary_key})) # primären key entfernen my $primary_val=delete($values->{$primary_key}); # Keys und Values separieren @vals=(); @keys=(); while (my ($k,$v)=each(%$values)) { push(@vals,$k); push(@keys,$v); } my $update_vals=join(', ',map{"$_ = ?"}@keys); $sth = $dbh->prepare(qq{ update $table SET $update_vals WHERE $primary_key=?}); $ok=$sth->execute(@vals,$primary_val); $sth->finish(); return $ok; } 1;