我是Perl的新手(主要是PHP背景),并想知道我是否可以像PHP一样使用DBI来检索数据库行。这是一个包含哈希的数组,哈希名称作为数据库列名。例如:
[0] -> {
'firstname' -> 'mark',
'surname' -> 'smith'
},
[1] -> {
'firstname' -> 'fred',
'surname' -> 'baker'
},
....
我试过了:
my $ref = $stmt_datahub->fetchall_arrayref;
print(Dumper($ref));
但是这并不是列的名称。即返回:
['mark', 'smith'], ['fred', 'baker']
等
并且fetchall_hashref
看起来你需要为它提供一个主键来索引哈希值,我并不总是这样,所以我宁愿只输出一个数组。
这可能吗?!
答案 0 :(得分:3)
你需要fetchall_arrayref,但有一个参数。这将返回hashrefs的arrayref:
my $results_arrayref = $dbh->fetchall_arrayref( {} );
您还可以选择仅在hashref中包含某些列 - 有关详细信息,请参阅文档:
https://metacpan.org/module/DBI#fetchall_arrayref
为了清楚起见,您可能希望以类似Perl的方式编写该数据结构 - 在记录Perl列表/数组/ arrayref时,您不会包含数组索引(0,1等)(PHP混淆了这个问题一点点关联数组)
[ {
firstname => 'mark',
surname => 'smith',
},
{
firstname => 'fred',
surname => 'baker',
},
...
],