4
這裏的代碼SQLite數據庫應用程序的一個片段我工作:Perl的SQLite3:{NAME}不工作?
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}永遠不會返回我期望的arrayref。如果我拿出die子句,它運行良好(當然,無論我在哪裏使用$名稱,都會拋出期望的「使用未初始化值」警告)。
是否有一些明顯的原因,我錯過了{NAME}不會觸發,因爲查詢工作得很好?
謝謝!
雖然在此,請您澄清未啓動的語句對象的「NAME」屬性的教育價值是什麼?乍看之下,我無法從DBI POD或源中獲得直接的答案。它是列名的數組引用嗎?對於Q和A都爲+1 – DVK 2010-12-04 01:27:39
在fetchall_arrayref之後NAME不可用的原因是一旦獲取所有行後語句不再處於活動狀態。 – bohica 2012-05-01 07:25:51