返回MySQL结果作为Perl中的哈希表

ste*_*esu 4 mysql perl hashtable

在Perl中,我正在进行类似于以下内容的SQL查询:

SELECT `id`, `title`, `price` FROM `gamelist`
Run Code Online (Sandbox Code Playgroud)

我想做的是获取此查询的结果并将其转储到哈希表中.我正在使用DBI,目前我只知道如何执行以下操作:

my %results;
my $count = 0;
while( @result = $statement->fetchrow() ){
    %results{'id'}[$count] = $result[0];
    %results{'title'}[$count] = $result[1];
    %results{'price'}[$count] = $result[2];
    $count++;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢使用$result[0]和信任第一个字段将是ID.我宁愿有类似的东西:

my %results;
my $count = 0;
while( %result = $statement->fetchrow_as_hashtable() ){
    %results{'id'}[$count] = %result{'id'};
    %results{'title'}[$count] = %result{'title'};
    %results{'price'}[$count] = %result{'price'};
    $count++;
}
Run Code Online (Sandbox Code Playgroud)

我尝试在谷歌上四处寻找,但在DBI/Perl中找不到很多好的答案.我确实找到了一个提供此功能的开源类,但我觉得这应该可以在不使用别人的课程的情况下实现.

小智 5

while (my $result = $statement->fetchrow_hashref) {
        print $result->{id};
        print $result->{title};
        print $result->{price};
}
Run Code Online (Sandbox Code Playgroud)

使用fetchrow_hashref将结果直接放在哈希中