以下代码有什么问题吗?

SSS*_*SSS 1 perl

我试图使用单个查询将多个值插入到同一字段.以下代码是否有任何错误?

my $dbh =  DBI->connect("DBI:mysql:accounting:localhost", 'username', 'password',
      {RaiseError => 1});
my @id = [1,18,976,90];
my @name = ['ss','dc','ws','rd'];
my @data = ([@id],[@name]);
my $ab = $dbh->prepare("insert into table (id,name) values (?,?)";);
for my $datam (@data) {
  $ab->execute(@$datam);
}
$ab->finish();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:DBI::st=HASH(0*a16f774)准备声明.可能是什么导致了这个?

ike*_*ami 6

因为你没有真正给出错误,所以无法真正回答你的问题,但我发现你的代码存在问题.你在做

$ab->execute([1,18,976,90]);
$ab->execute(['ss','dc','ws','rd']);
Run Code Online (Sandbox Code Playgroud)

当你明显想做的时候

$ab->execute(  1, 'ss');
$ab->execute( 18, 'dc');
$ab->execute(976, 'ws');
$ab->execute( 90, 'rd');
Run Code Online (Sandbox Code Playgroud)

固定:

my @id = (1,18,976,90);
my @name = ('ss','dc','ws','rd');

for my $i (0..$#id) {
   $ab->execute($id[$i], $name[$i]);
}
Run Code Online (Sandbox Code Playgroud)