我是 Perl 新手(主要是 PHP 背景),想知道是否可以使用 DBI 以与 PHP 类似的输出方式检索数据库行。这是一个包含哈希值的数组,哈希值名称作为数据库列名称。即类似:
[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
看起来您需要为其提供一个主键来索引哈希值,但我并不总是有,所以我宁愿它只输出一个数组。
这可能吗?!
最佳答案
您需要 fetchall_arrayref,但带有参数。这将返回 hashrefs 的 arrayref:
my $results_arrayref = $dbh->fetchall_arrayref( {} );
您还可以选择仅在哈希引用中包含某些列 - 有关更多详细信息,请参阅文档:
https://metacpan.org/module/DBI#fetchall_arrayref
为了清楚起见,您可能希望以更像 Perl 的方式编写该数据结构 - 在记录 Perl 列表/数组/arrayref 时,您不会包含数组索引(0、1 等)(PHP 混淆了这个问题)一些关联数组)
[ {
firstname => 'mark',
surname => 'smith',
},
{
firstname => 'fred',
surname => 'baker',
},
...
],
关于perl - 以 HashMap 形式检索数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17543756/