【发布时间】:2012-05-01 10:31:11
【问题描述】:
这是我正在开发的一个 sqlite 数据库应用程序中的一个 sn-p 代码:
my $query = "select * from pins";
my $sth = $dbh->prepare($query) or die "Couldn't prep: $DBI::errstr";
$sth->execute or die "Exec problem: $DBI::errstr";
my $result = $sth->fetchall_arrayref();
my $names = $sth->{NAME} or die "Name failed: $DBI::errstr";
foreach my $row (@$res) {
# ... do some row-specific things
foreach my $cell (@$row) {
# ... do some cell-specific things
}
}
查询触发得很好,实际上它返回了正确的结果。但是,由于某种原因,这条线,
my $names = $sth->{NAME} or die "Name failed: $DBI::errstr";
失败。 {NAME} 永远不会返回我期望的数组引用。如果我去掉 die 子句,它运行良好(当然,在我使用 $names 的任何地方都会抛出预期的“使用未初始化的值”警告)。
鉴于查询工作正常,我是否有一些明显的原因错过了 {NAME} 不会触发?
谢谢!
【问题讨论】:
-
在此期间,能否请您澄清一下未启动的教育价值语句对象的“NAME”属性是做什么的?乍一看,我无法从 DBI POD 或来源中得到直接的答案。它是列名的数组引用吗? Q 和 A 均 +1
-
在fetchall_arrayref 之后NAME 不可用的原因是该语句在获取所有行后不再活动。