我正在使用perl,并使用DBI。到目前为止,我一直在使用 - > fetchall_arrayref来获取数据库查询的结果,并且只是通过数字键访问数组。但是,我更喜欢能够通过字段名称(关联提取)访问记录而不是数字。
我该怎么做,以及访问密钥的正确语法是什么?
我更喜欢这样的东西:
$data[0]['name']
而不是:
$data[0][1]
工作解决方案
my %data;
@{$data{$id}}{('name')} = 'something';
答案 0 :(得分:5)
阅读DBI docs。特别是fetchall_hashref
。
你还应该学习Perl语法,因为它与PHP不同。
答案 1 :(得分:5)
您可以使用selectall_arrayref。以下是DBI联机帮助页面中的示例:
您可能经常需要获取行数组,其中每行都存储为哈希值。 这可以通过以下方式简单地完成:
my $emps = $dbh->selectall_arrayref(
"SELECT ename FROM emp ORDER BY ename",
{ Slice => {} }
);
foreach my $emp ( @$emps ) {
print "Employee: $emp->{ename}\n";
}
答案 2 :(得分:2)
如果您执行fetchall_hashref()
,那么您将获得正在寻找的哈希值。键将是数据库中的字段名称。我有点晚了,乔得到了它,但它会的。
$data->{0}->{'field'};