, поэтому я довольно большой новичок в кодировании, и я доволен обучением Trial и ошибкой, на этот раз я пытаюсь работать с DB с Perl, на самом деле он хорошо работает, когда я просто использую 3 заголовка таблицы (Terminal, Zeitstempel , Ergebnisnummer), но когда я пытаюсь добавить больше заголовков (Ergebnistext, Transart, Belegnummer, Trace, Betrag, Kartenart, Kartennummer, Entrymode), он всегда дает мне синтаксическую ошибку, и я проверил полчаса, но не смог найти ошибку. Если кто-нибудь знает, почему я буду благодарен за вашу помощь! эта часть моего кода выглядит так:Почему MySQL дает мне синтаксическую ошибку?
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();
я не изменить имена переменных на английском, потому что, возможно, они вызывают ошибку синтаксиса. Это сообщение об ошибке:
DBD :: mysql :: st execute failed: У вас возникла ошибка в синтаксисе SQL; проверьте версию, соответствующую вашей версии сервера MySQL, для , для синтаксиса справа от строки '') 'в строке 2 на C: \ Users \ Desktop \ findlogstamp \ sqlneu.pl lin e 50, строка 1. Вы: ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «»)»в строке 2 в C: \ Пользователя \ Desktop \ findlogstamp \ sqlneu.pl линии 50, линии 1.
Что ошибка? – mwp
Построение оператора SQL путем интерполяции переменных в строку, как правило, очень плохая идея. Подробности см. В [Bobby Tables] (http://bobby-tables.com/). –