【发布时间】:2009-12-02 02:38:54
【问题描述】:
我有一个哈希值,我正在尝试将其值插入数据库。哈希定义如下:
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 question 相同,即
my @values = values %hash;
编辑: 数据库结构:
T1:
sid sentence
1 First Word
2 Second Word is correct
0 Third word does not exist
上面的sid是hash的keys,句子是hash的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 时,参考值被插入。
编辑:
_ 输出 _
$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++;
}
【问题讨论】:
-
该问题的所有答案都是正确的。您真的需要帮助更新数据库还是需要帮助使用 Perl 标准数据结构?
-
@Manni:如果答案是正确的,为什么参考值会上传到数据库而不是实际值?
-
给我们看一些代码:至少是sql语句和execute语句。然后告诉我们您的数据库。我们现在知道您希望这些值如何在您的数据库中结束。键是表示行、列还是都不表示?
-
显示
print Dumper \@values的输出 -
我们可以看到更多你的代码吗?听起来某处有一个简单的错误,特别是因为您显然已经尝试了三种不同的有效方法。简单的打字错误有时让我很困惑。