【发布时间】:2017-01-10 16:07:15
【问题描述】:
所以我在编码方面几乎是一个大新手,我通过反复试验学习,这次我尝试使用 Perl 使用数据库,实际上当我只使用 3 个表头(终端, Zeitstempel,Ergebnisnummer)但是当我尝试添加更多标题(Ergebnistext,Transart,Belegnummer,Trace,Betrag,Kartenart,Kartennummer,Entrymode)时,它总是给我一个语法错误,我检查了半个小时但找不到错误.如果有人知道为什么我会很感激你的帮助!我的这部分代码如下所示:
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 执行失败:您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册 在第 2 行的 '' )' 附近使用的正确语法 C:\Users\Desktop\findlogstamp\sqlneu.pl lin e 50, line 1. 你 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在 '' )' 附近使用正确的语法 第 2 行位于 C:\User s\Desktop\findlogstamp\sqlneu.pl 第 50 行, 第 1 行。
【问题讨论】:
-
错误是什么?
-
通过将变量插入字符串来构建 SQL 语句通常是一个非常糟糕的主意 - 有关详细信息,请参阅 Bobby Tables。