我有一个哈希,我正在尝试将其值插入数据库。哈希定义如下:
my %hash = (
1 => 'First Word',
2 => 'Second Word is correct',
0 => 'Third word does not exist',
);
我不知道如何使用哈希值在数据库中插入值。我注意到我的问题类似于this问题。但是,没有一个答案似乎是正确的。在使用任何列出的答案时,不插入散列中的值,而是插入对散列的引用,即ARRAY(0x9e63b30)
。但是当我print Dumper @values
时,值会被打印而不是参考值。
有关如何插入值而非参考值的任何建议?而且,question的答案中列出的解决方案出了什么问题。
@values的定义与this问题相同,即
my @values = values %hash;
编辑: Db结构:
T1:
sid sentence
1 First Word
2 Second Word is correct
0 Third word does not exist
上面sid中的是哈希的keys
,句子是哈希的values
。
这是我尝试过的(这是question的答案之一):
my @keys = keys %hash;
my @values = values %hash;
my $sth = $dbh->prepare("INSERT INTO T1(sid, sentence) VALUES (?,?);");
$sth->execute_array({},\@keys, \@values);
再次插入@values
时会插入参考值。
编辑:
_ OUTPUT _
$VAR1 = 'First Word';
$VAR2 = 'Third word does not exist';
$VAR3 = 'Second Word is correct';
_ 代码 _ 这是我如何将值插入%hash
my $x=0;
foreach my $file(@files){
if ($file =~ /regex/){
push(@{$hash{$x}}, "$1 $2 $3 $4 $5 $6 $7");
}
elsif ($file =~ /regex/){
push(@{$hash{$x}}, "$1 $2 $3 $4 $5 $6");
}
elseif ($file =~ /Hs_(.+)_(.+)_(.+)_(.+)_(.+)_W.+txt/){
push (@{$hash{$x}}, "$1 $2 $3 $4 $5");
}
$x++;
}
答案 0 :(得分:2)
这不是你最初发布的!!!你有一个对数组的引用哈希。阅读perl参考教程(perlreftut)以了解它们。
(使用命令
perldoc perlreftut
访问本教程)
答案 1 :(得分:0)
我在另一个thread上的回复你已经链接到作品。我测试了它并且多次使用它。它不使用execute_array(),只执行execute()。
答案 2 :(得分:0)
这应该有用。
my $key;
my $value;
while (($key, $value) = each %hash) {
$sth->bind_param(1, $key);
$sth->bind_param(2, $value);
$sth->execute();
}
答案 3 :(得分:0)