Perl fetchrow_array "zurücksetzen" / 2x ausführen

furryhamster

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.101
Hi,

aus HTML-Design-Technischen Gründen muss ich zwei mal das Ergebnis eines Selects ausführen. Jetzt möchte ich das Select allerdings nur 1x absetzen, da dieses etwas umfangreicher ist. Wie bekomme ich es hin, dass ich das fetchrow_array zwei mal ausführen kann? derzeit sieht mein code etwa wie folgt aus:

Code:
$sth = $dbh->prepare("mein select");
$sth->execute();

while (my data = $sth->fetchrow_array()) {
mache dies
}

print "designkram";

$sth = $dbh->prepare("mein select");
$sth->execute();

while (my data = $sth->fetchrow_array()) {
mache jenes
}

Geht es auch irgendwie ohne das zweite prepare / sth->execute?
 
ich kenne perl nicht aber es sieht so aus als ob du $sth->fetchrow_array() in eine variable speichern solltest

$array = $sth->fetchrow_array()

while(my data = $array){
blaba
}

while(my data = $array){
blub
}

so wird der fetch nur einmal ausgefüher
 
Habe ich mal versucht, allerdings haut das noch nicht hin.

Kann mal wer bitte über den Code schauen?

Code:
my $sth;
my $dollar = '$';
my $counter = 0;
my $fillcounter = 0;
my @resultArray = ();
my @zeilenArray;
my $anzahlErgebnisse = 0;
my $schleifenCounter = 0;

$sth = $dbh->prepare("select ...")
or die print h3({-style=>"color:red"}, "Fehlermeldung: " . $dbh->errstr);
$sth->execute()
	or die print h3({-style=>"color:red"}, "Fehlermeldung: " . $sth->errstr);

while ( my @data = $sth->fetchrow_array() ) {
	push(@zeilenArray, $data[0]);
	push(@zeilenArray, $data[1]);
	push(@zeilenArray, $data[2]);
	push(@zeilenArray, $data[3]);
	push(@zeilenArray, $data[4]);
	push(@zeilenArray, $data[5]);
	push(@zeilenArray, $data[6]);
	push(@zeilenArray, $data[7]);
	push(@zeilenArray, $data[8]);
	push(@zeilenArray, $data[9]);
	push(@zeilenArray, $data[10]);
	push(@zeilenArray, $data[11]);
	push(@zeilenArray, $data[12]);
	push(@zeilenArray, $data[13]);
	push(@zeilenArray, $data[14]);
	push(@zeilenArray, $data[15]);
	push(@zeilenArray, $data[16]);
	push(@zeilenArray, $data[17]);
	push(@zeilenArray, $data[18]);
	push(@zeilenArray, $data[19]);
	push(@zeilenArray, $data[20]);
	push(@zeilenArray, $data[21]);
	push(@zeilenArray, $data[22]);
	push(@zeilenArray, $data[23]);
	push(@zeilenArray, $data[24]);
	push(@resultArray, @zeilenArray);
	while(@zeilenArray){
		shift(@zeilenArray);
	}
	$anzahlErgebnisse = $anzahlErgebnisse+1;
}

while ($counter < $anzahlErgebnisse ) {

print "$resultarray[$counter]->[7]";
$counter = $counter+1;
}

counternamen passe ich noch an ;)

Edit: Die Fehlermeldung wäre wohl auch nicht verkehrt zu nennen ...
Cant use string ("29116") as an array ref while "strict refs" in use

Edit2: Habs.. Das packen des Arrays in ein anderes Array war falsch und muss so heißen: push(@resultArray, [@zeilenArray]);
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben