我的MYSQL数据库的字段名称包含连字符。尝试使用Perl将数据从XML插入数据库。%HEAD中有XML
键是列标题,值是对应的数据。
my %HEAD= ('REGISTRATION-NUMBER' => 'AAACT2727QXM003',
'RETURN-YEAR' => '2013',
'MONTH' => 'July',
'LTU' => 'Yes',
'NIL-RETURN' => 'No',
'ASSESSEE-NAME' => 'TATA MOTORS LIMITED');
my @HEADER_keys= keys %HEAD;
foreach $key(@HEADER_keys) {
$value= $HEAD{$key};
my $sth = $dbh->prepare("INSERT INTO indirect_taxes($key) VALUES ($value)");
$sth->execute() or die $sth->errstr;
}
或者代替foreach
my @HEADER_values= values %HEAD;
my $sth = $dbh->prepare("INSERT INTO indirect_taxes(?) VALUES (?)");
$sth->execute_array(\@HEADER_keys, \@HEADER_values) or die "the failure cause: $DBI::errstr";
由于密钥包含连字符,因此我得到了MYSQL语法错误。来自Can a table field contain a hyphen?
得到了语法,但使用perl无法将反引号添加到变量$ key或@HEADER_keys中。
请提出一种向$ keys添加反引号的方法。
最佳答案
在$key
附近重试并使用sql占位符?
避免sql injection
foreach my $key(keys %HEAD) {
my $sql = sprintf("INSERT INTO indirect_taxes (%s) VALUES (?)",
$dbh->quote_identifier($key));
my $sth = $dbh->prepare($sql);
$sth->execute($HEAD{$key})
or die $sth->errstr;
}
关于mysql - 将反引号添加到perl中的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18783674/