Schrift
[thread]3454[/thread]

Update Anweisung



<< >> 8 Einträge, 1 Seite
Tom
 2004-05-16 22:18
#32140 #32140
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

Ich möchte in meiner Datenbank bestimmte Einträge aktualisieren, aber wenn ich die Update Anweisung ausführe erhalte ich immer folgende Fehlermeldung.

Quote
DBD::mysql::st execute failed: Duplicate entry 'dir' for key 1


So sieht das aus

http://www.weber-computerhilfe.de/bilder/sonstige/...

Und so sieht mein Code aus

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
	$dbh = DBI->connect( "$dbms:$dbname","$dbuser","$dbpasswd", {PrintError => 0, RaiseError => 1}) || die 
"Verbindung zur Datenbank fehlgeschlagen: $DBI::errstr";

$sql = qq{UPDATE ${table_prefix}config SET config_name= ?, config_value = ?};

$sth = $dbh->prepare( $sql ) or die DBI::errstr;
foreach $conf(@config)
{
($name,$value)=@$conf;
$sth->execute($name,$value);
}
$sth->finish();
$dbh->disconnect();


Was ist denn an meiner Anweisung falsch???

Danke

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
coax
 2004-05-16 23:17
#32141 #32141
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
sorry wenn ich mich jetzt vertue aber muesste das nicht
Code: (dl )
1
2
3
4
5
6
7
$sql = qq~UPDATE ${table_prefix}config SET config_value = ? WHERE config_name = ?~;

$sth = $dbh->prepare( $sql ) or die DBI::errstr;
foreach $conf(@config)
{
($name,$value)=@$conf;
$sth->execute($value, $name);

lauten.
($value und $name sind dann bei execute getauscht)\n\n

<!--EDIT|coax|1084735081-->
,,Das perlt aber heute wieder...'' -- Dittsche
ronald
 2004-05-17 10:58
#32142 #32142
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Der Fehlermeldung nach würde bei dem Update ein doppelter Schlüssel entstehen.
Taulmarill
 2004-05-17 12:10
#32143 #32143
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn die spalte config_name unique ist, wird das nicht funktionieren.
Beachte, dass deine SQL anweisung JEDE zeile mit den selben werten füllen will.
ich denke folgendes SQL ist das, was du suchst

Code: (dl )
 $sql = qq~UPDATE ${table_prefix}config SET config_value = ? WHERE config_name = ?~;
\n\n

<!--EDIT|Taulmarill|1084781481-->
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
steffenw
 2004-05-17 12:16
#32144 #32144
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jetzt bin ich aber sprachlos, hätte ja gedacht, daß das nicht geht aber die Priorität der Variablenauflösung scheint höher zu sein als das Quoting mit {}.
Code: (dl )
qq{UPDATE ${table_prefix}config SET config_name= ?, config_value = ?}
$SIG{USER} = sub {love 'Perl' or die};
coax
 2004-05-17 15:08
#32145 #32145
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=steffenw,17.05.2004, 10:16]Jetzt bin ich aber sprachlos, hätte ja gedacht, daß das nicht geht aber die Priorität der Variablenauflösung scheint höher zu sein als das Quoting mit {}.
Code: (dl )
qq{UPDATE ${table_prefix}config SET config_name= ?, config_value = ?}
[/quote]
das macht hier keine Probleme, sondern die SQL-Anweisung.

Code: (dl )
1
2
3
4
5
6
7
my $table_prefix = 'test_';

my $str = qq{UPDATE ${table_prefix}config SET config_name= ?, config_value = ?};

print "$str\n";
# Ausgabe:
#UPDATE test_config SET config_name= ?, config_value = ?


Grusz Christian.
,,Das perlt aber heute wieder...'' -- Dittsche
Oesi50
 2004-05-17 17:38
#32146 #32146
User since
2004-05-15
33 Artikel
BenutzerIn
[default_avatar]
Wenn config_name der Primärschlüssel ist, wie wäre es denn mit REPLACE?

Grüße Oesi
Tom
 2004-05-18 00:15
#32147 #32147
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
@coax

Danke so hat es funktioniert.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
<< >> 8 Einträge, 1 Seite



View all threads created 2004-05-16 22:18.