在 Perl 中将 MySQL 结果作为哈希表返回
Posted
技术标签:
【中文标题】在 Perl 中将 MySQL 结果作为哈希表返回【英文标题】:Returning MySQL results as hash tables in Perl 【发布时间】:2011-12-08 23:26:38 【问题描述】:在 Perl 中,我正在执行类似于以下内容的 SQL 查询:
SELECT `id`, `title`, `price` FROM `gamelist`
我想要做的是获取此查询的结果并将其转储到哈希表中。我正在使用 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++;
但是我不喜欢使用 $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++;
我尝试在 Google 上四处寻找,但在 DBI/Perl 中找不到很多好的答案。我确实找到了一个提供此功能的开源类,但我觉得这应该可以不使用其他人的类。
【问题讨论】:
Google 并不是在随机 Perl 功能上搜索帮助的最佳位置 - 因为网络上有很多糟糕的 Perl 信息。你最好在 CPAN (metacpan.org) 或 Perldoc (perldoc.perl.org) 上搜索。 【参考方案1】:fetchrow_hashref
呢?
【讨论】:
这正是我想要的。谢谢。【参考方案2】:while (my $result = $statement->fetchrow_hashref)
print $result->id;
print $result->title;
print $result->price;
使用 fetchrow_hashref 将结果直接放在哈希中
【讨论】:
我以为他会知道如何使用它,他的问题包含一个基本上适用于方法名称更改和取消引用的示例。【参考方案3】:请参阅 DBI
文档以了解如何使用 selectall_arrayref
:
$rows = $dbh->selectall_arrayref($query, Slice=>, @params)
$rows
是一个哈希数组。
【讨论】:
以上是关于在 Perl 中将 MySQL 结果作为哈希表返回的主要内容,如果未能解决你的问题,请参考以下文章