Thread Flat-ASCII in MySQL [Update]
(15 answers)
Opened by afsmann at 2012-02-01 09:16 2012-02-01T15:01:34 afsmannMit meinem Code und deinen Beispieldatenbanken wird eine komplette SQL erzeugt. Wie hier: update Adressen set Firmenname='Velag Pharma GmbH' where Key_ADR=67 QuoteDas Problem ist dieser Code-Block: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 for ( my $i = 1 ; $i <= @spalte ; $i++ ) # Nochmal alle Spalten durchgehen { if ( $spkey[$i] != 0 && $sref->[$i] ne "" ) # Wenn Primärschlüssel { if ( $sptyp[$i] eq "N" ) # Wenn numerisch... { $sql .= $spalte[$i] . "=" . $sref->[$i] . " and "; } # dann anhängen "<spaltenname>=<wert> and " else # ansonsten { $sql .= $spalte[$i] . "='" . $sref->[$i] . "' and "; } # anhängen "<spaltenname>='<wert>' and " } $sql =~ s/ and $// ; # Am Ende ist hinten ein " and " zu viel - das wird gelöscht print $sql. "\n"; my $sth = $dbh->prepare($sql) || die "$DBI::errstr\n"; # SQL-Statement vorbereiten... $sth->execute() || die "$DBI::errstr\n"; # ... und ausführen } Schau mal Zeile 4 des Blocks an. Wenn es ein Primärschlüssel ist, werden mehrere Bedingungen ans WHERE angehängt, das ist wohl so gewollt. Dann wird der if-Block verlassen und das SQL ausgegeben bzw. in der Datenbank ausgeführt. Das führst du aber für jede Spalte aus. ich tippe mal drauf, dass du Code (perl): (dl
)
1 2 my $sth = $dbh->prepare($sql) || die "$DBI::errstr\n"; # SQL-Statement vorbereiten... $sth->execute() || die "$DBI::errstr\n"; # ... und ausführen |