는 여기에 내가 일하고 있어요 SQLite는 데이터베이스 응용 프로그램에서 코드 조각입니다 :펄의 SQLite3 : {이름}이 (가) 작동하지 않습니까?
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 절을 꺼내면 잘 실행됩니다 (당연히 $ names를 사용하는 곳에서는 "초기화되지 않은 값 사용"경고를 던집니다).
쿼리가 제대로 작동 했으므로 {NAME}이 (가) 실행되지 않는다는 분명한 이유가 있습니까?
감사합니다.
성명서 객체의 "NAME"속성이 수행하는 교육적 가치가 무엇인지 명확히 설명해주십시오. 언뜻보기에는 DBI POD 나 소스에서 직접 답변을 얻을 수 없었습니다. 열 이름에 대한 배열 참조입니까? +1 Q와 A 모두 +1 – DVK
fetchall_arrayref 다음에 NAME을 사용할 수없는 이유는 가져온 모든 행을 가져 오면 해당 명령문이 더 이상 활성화되지 않기 때문입니다. – bohica