1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 1. INSERT INTO TABLE
# 2. SELECT FROM TABLE
sub insert_tab
{
$db = @_[0];
$table = @_[1];
@TAB = split (/ /,@_[2]);
@VALUES = split (/ /,@_[3]);
@VAL = ();
foreach $i (@VALUES)
{
push (@VAL,"\'".$i."\'");
}
$fieldlist = join (",", @TAB);
$fieldvalues = join (",", @VAL);
$con = "DBI:mysql:$db";
$user = "root";
$passwort = "pwd";
$dbh = DBI->connect("$con","$user","$passwort") || die "DB connection not made: $DBI_errstr";
$sql = qq{ insert into $table ($fieldlist) values ($fieldvalues) on duplicate key update ?? };
#$sql = qq{ insert into $table ($fieldlist) values ($fieldvalues) };
$sth = $dbh->prepare($sql);
$sth->execute();
$sth->finish();
$dbh->disconnect();
}
return 1;
1 2 3
my $sql = "INSERT INTO table (foo, bar) VALUES (?,?)"; my $sth = $dbh->prepare($sql); $sth->execute($new_foo, $new_bar);
2012-06-14T09:36:12 pqdas '' um das ? braucht man nicht und sollte man auch nicht machen.
Guest Johannes SchullerDeswegen funktioniert das mit den Platzhaltern auch nicht
Quote, weil ich ja meine fixen Werte schon habe. Stehen in @VALUES und werden dann gesplitet und mit der foreach Schleife werden die '' dazugefügt. Dann überschreibe ich das ganze in die $fieldlist und $fieldvalues, das ergibt z.B. $fieldlist = 'tab1','tab2' und $fieldvalues = '111111','Y'
Quotebeim Insert funktioniert das auch tadellos, aber leider habe ich keinen Plan wie is das dann mit einem Update verbinden soll :-(
1 2 3 4 5 6 7 8
#!/usr/bin/perl use strict; use warnings; use database; my $ok=database::insert_tab('test_table',{ id=> 1, user => 'a', wert => 'b', 'time' => localtime() },'id'); print $ok?"OK":"Fehler!","\n"; database::close_db();
2012-06-14T09:22:32 pqOT: immer wenn ich deinen code sehe, denke ich, ich muss dem armen topeg mal ein paar leerzeichen schenken und ihm helfen, von der klammersucht loszukommen ;-)
2012-06-14T14:23:56 pqdas hier sind zum beispiel wieder zu viele klammern weggelassen:
return 0 unless $table and $values ;
2012-06-14T14:23:56 pqman darf halt nicht zu viel weglassen. aber schrecklich finde ich z.b.
tu_was() if(defined($foo));