my @all_fields = qw(ort mv_id mol_id); # hier alle Felder, die Integer sein sollen my @integer_fields = qw(mol_id); my @def_fields = (); foreach (@all_fields) { push @def_fields, $_ if defined $params{$_}; } for(@integer_fields){ $params{$_} = undef if($params{$_} eq ''); } if (@def_fields) { my $sql = "INSERT INTO recherche (" . join(',', @def_fields) . ") VALUES (" . join(',', ('?') x scalar @def_fields) . ")"; my $sth = $dbh->prepare($sql) or die $dbh->errstr(); $sth->execute(@params{@def_fields}) or die $dbh->errstr(); }