![]() |
|< 1 2 >| | ![]() |
17 Einträge, 2 Seiten |
1
2
3
4
5
6
7
my %params = $cgi->Vars();
....
my $sql = "insert into recherche (ort, mv_id, mol_id, ...)
values (" $dbh->quote($params{ort}) . ","
. $dbh->quote($params{mv_id}) . ","
. $dbh->quote($params{mol_id}) . ","
. $dbh->quote($params{dgm_id}) . "," ...
1
2
3
my $sql = "insert into recherche (ort, mv_id, mol_id, ...) values (?,?,?,?)";
my $sth = $dbh->prepare($sql) or die $dbh->errstr();
$sth->execute(@params{qw/ort mv_id mol_id/}) or die $dbh->errstr();
QuoteDachte ich auch, klappt bei mir aber nur bei Varchar-Feldern in der DB. Bleibt ein Intiger-Feld frei, mault mich die DB an.Undefinierte Werte werden als NULL gespeichert...
Quote. Du solltest außerdem auch mit der ?-Notation
1
2
3
4
5
6
7
8
9
10
11
12
my @all_fields = qw(ort mv_id mol_id);
my @def_fields = ();
foreach (@all_fields) {
push @def_fields, $_ if defined $params{$_};
}
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();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("DBI:mysql:dbname:localhost",'user','passwd') or die $DBI::errstr;
my $statement = "INSERT INTO test_tabelle(testfeld) VALUES (?)";
my $sth = $dbh->prepare($statement) or die $dbh->errstr();
$sth->execute(1) or die $dbh->errstr();
$sth->execute(undef) or die $dbh->errstr();
$sth->finish();
$dbh->disconnect();
1
2
3
[...]
my $sql = "INSERT INTO recherche (" . join(',', @def_fields) . ") VALUES (" . join(',', '?' x scalar @def_fields) . ")";
[...]
$sth->bind_param(3, $value, { TYPE => SQL_INTEGER });
<INPUT size=13 type="TEXT" ID="mol_id" NAME="mol_id" >(MoleID)
![]() |
|< 1 2 >| | ![]() |
17 Einträge, 2 Seiten |