使用Perl将值作为数组插入到MYSQL数据库中

nor*_*dum 0 mysql perl hash

我已经创建了数据库头作为哈希的键,并尝试将哈希值(数据类型:数组)插入到mysql数据库中.但它给出了语法错误.以下是代码请建议做什么???

my @keys = keys %hash; #keys used as database headers
my @values=values %hash; #value to be inserted
my $sth=$dbh->prepare("INSERT INTO `$table`(@keys) VALUES (@values)");
$sth->execute() or die "ERROR writing to database: $DBI::errstr $dbh->errstr";
Run Code Online (Sandbox Code Playgroud)

这是哈希(使用Data :: Dumper)

$VAR1 = bless( { '120493acNo' => [ '1' ], 'a120064amount' => [ '133' ], '120310amount' => [ '23' ]}, 'CGI' ); 
Run Code Online (Sandbox Code Playgroud)

pil*_*row 5

你想要这样的东西:

my $dbh = DBI->connect(..., {RaiseError => 1});

my $sql = 'INSERT INTO ' . $dbh->quote_identifier($table_name) .
                ' (' . join(',', map { $dbh->quote_identifier($_) } @fields) . ') ' .
          'VALUES (' . join(',', map { '?' }) @values)                     . ')';

$dbh->do($sql, undef, @values);
Run Code Online (Sandbox Code Playgroud)

那会的

  1. 启用RaiseError,因此您不必显式检查DBI错误
  2. 安全地引用标识符 $table_name和所有标识符@fields
  3. 使用占位符@values,所以你不必担心他们引述
  4. 正确地用逗号分隔字段名称和占位符序列.

CPAN模块隐藏了易于使用的界面背后的逻辑.