Also bin ich ein ziemlich großer Neuling in der Programmierung und ich lerne etwas von Trial and Error, dieses Mal versuche ich mit einer DB mit Perl zu arbeiten, eigentlich funktioniert es gut, wenn ich nur 3 Tabellenköpfe benutze (Terminal, Zeitstempel , Ergebnisnummer), aber wenn ich versuche, weitere Header hinzuzufügen (Ergebnistext, Transart, Belegnummer, Trace, Bericht, Kartenart, Kartennummer, Entrymode) gibt es immer einen Syntax-Fehler und ich habe eine halbe Stunde gecheckt, konnte aber den Fehler nicht finden. Wenn jemand weiß, warum ich Ihre Hilfe zu schätzen wüsste! dieser Teil meines Codes sieht wie folgt aus:Warum gibt MySQL mir einen Syntaxfehler?
foreach $file (@file)
{
$currentfile = "$currentdir\\$file";
open(zloop, "<", $currentfile) or die "Failed to open file: $!\n";
while (<zloop>) {
my %row;
chomp;
@row{@headers} = split /;/;
my $tid = $row{'tid'};
my $zeit = $row{'zeit'};
my $ergebnisnummer = $row{'ergebnisnummer'};
my $ergebnistext = $row{'ergebnistext'};
my $transart = $row{'transart'};
my $belegnummer = $row{'belegnummer'};
my $trace = $row{'trace'};
my $betrag = $row{'betrag'};
my $kartenart = $row{'kartenart'};
my $kartennummer = $row{'kartennummer'};
my $entrymode = $row{'entrymode'};
my $sth = $dbh->prepare("INSERT INTO `teso`(Terminal, Zeitstempel, Ergebnisnummer, Ergebnistext, Transart, Belegnummer, Trace, Betrag, Kartenart, Kartennummer, Entrymode)
values ($tid, $zeit, $ergebnisnummer, $ergebnistext, $transart, $belegnummer, $trace, $betrag, $kartenart, $kartennummer, $entrymode)");
$sth->execute() or die $DBI::errstr;
$sth->finish();
ich habe nicht die Variablennamen in Englisch ändern, weil vielleicht sind sie die Syntaxfehler verursacht. Dies ist die Fehlermeldung:
DBD :: mysql :: st ausführen fehlgeschlagen: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion für die richtige Syntax für die Verwendung in der Nähe von '') in Zeile 2 unter C: \ Benutzer \ Desktop \ findlogstamp \ sqlneu.pl Zeile 50, Zeile 1. Sie habe einen Fehler in deiner SQL-Syntax; Sie in der Bedienungsanleitung für die richtige Syntax zu verwenden in der Nähe von '')‘in Linie 2 bei C bis MySQL-Server-Version entspricht: \ User s \ Desktop \ findlogstamp \ sqlneu.pl Linie 50, Linie 1.
hilft Was ist der Fehler? – mwp
Erstellen einer SQL-Anweisung durch Interpolieren von Variablen in eine Zeichenfolge ist in der Regel eine sehr schlechte Idee - Siehe [Bobby Tables] (http://bobby-tables.com/) für Details. –