Perl:mysql: Select into an array

Hallo,
wie kann ich ein Select machen ohne den ganzen Datensatz zu bekommen.

@fields = qw(feld1 feld2 …);

$dataObject=$dbh->prepare(„SELECT“.join(’,’@fields)." FROM member4");

Ich will also die Feldnamen nur einmal angeben.

Mit fetchrow_array erhalte ich immer den ganzen Datensatz.
while(my @temp=$dataObject -> fetchrow_array ){…

Danke für Tips
und Grüße vom Seb :smile:

„SELECT“.join(’,’@fields)." FROM member4 WHERE indexfeld = eindeutiger_index_wert";

oder

„SELECT TOP 1“.join(’,’@fields)." FROM member4";

holli

„SELECT“.join(’,’@fields)." FROM member4 WHERE indexfeld =
eindeutiger_index_wert";

Danke dir holli, aber das hatte ich schon.
my $query = „SELECT „.join(“,“,@fields)." FROM $formfields{get} WHERE memberid = $formfields{memberid} ORDER BY blockflag";

Mein Problem ist das ich damit noch keine Perl-Variable habe.
Die Selectierten Felder sollten am besten in einem Array sein.

Ich habe es so versucht:
while(my @ergebnis = $dataObject -> fetchrow_array){
Aber damit bekomme ich immer den kompletten Datensatz, leider.

Grüße Sebastian

Hi,

wenn ich Dein Problem richtig verstanden habe,
willst Du nur bestimmte Elemente Deiner Ergebniszeile
in einer Variablen speichern.

Dazu verwende ich bind_columns:

$sth = $dbh-\>prepare(execute || warn "Kann SQL-Befehl nicht ausführen: $DBI::errstr\n";

$sth-\>bind\_columns(undef,\$buchungsid,\$zugriff) || die "Kann Spalten nicht binden\n";
while($sth-\>fetch){
 $buchungen{$buchungsid}=$zugriff;
}

Damit kannst Du die auf die Elemente einzeln zugreifen und sie
in jede beliebige Datenstruktur packen. In meinem Beispiel ein Hash. Siehe auch DBI-Doku.

Hope that helps,

-Andreas.

Mein Problem ist das ich damit noch keine Perl-Variable habe.
Die Selectierten Felder sollten am besten in einem Array sein.

Ich habe es so versucht:
while(my @ergebnis = $dataObject -> fetchrow_array){
Aber damit bekomme ich immer den kompletten Datensatz, leider.