2行のコードを節約するためにfetchrow_hashref
の代わりにDBIのselectrow_hashref
を使用しようとしていますが、同じ行のデータを何度も何度も返しています。Perl DBIのselectrow_hashrefをどのようにして各行を新しい行に戻すことができますか?
my $select="SELECT * FROM table";
while (my ($user_ref) = $dbh->selectrow_hashref()) {
# $user_ref is the same each time!
}
私はfetchrow_hashref
を使用し、すべてが正常であり、各反復が、私は新しいデータを取得します。
my $select="SELECT * FROM table";
my $sth = $dbh->prepare($select) || die "prepare: $select: $DBI::errstr";
$sth->execute() || die "execute: $select: $DBI::errstr";
while (my ($user_ref) = $sth->fetchrow_hashref()) {
# works great, new data in $user_ref each iteration
}
私が間違っていることを教えてください。 selectrow_hashref
は、単一レコードを取得することのみを目的としていますか?そのようには見えませんin the doc。
あなたのリンクからドキュメントに、「これは、ステートメントからのデータの最初の行を返します。」 –
さらに、私は、繰り返し呼び出されるすべてのステートメントに対して 'prepare'メソッドの使用を避けることはできません。 'selectrow'は一回限りのサテライトの方が使いやすいです。 – tjd