Zur Navigation

daten aus DB kopieren

1 schurik

Hallo Jörg,

kleine Frage:
gerne würde ich die Daten die ich aus der DB habe kopieren und für zwei Schleifen zur vergung stellen.

z.B.:

$qHotels = mysql_query("SELECT ac.object_id FROM hotels");


wie clone ich diese Query "$qHotels" damit ich es 2 oder 3 mal mit mysql_fetch_array() ausgeben kann

ich könnte ja immer wieder von neuem die DB abfragen aber das geht doch besser


06.03.2007 01:00

2 Jörg

Hallo schurik,

die Variable $qHotels zeigt auf das Ergebnis dieser Query - darauf kannst du beliebig oft zugreifen, ohne dass die Query noch einmal gestellt werdeen muss. Die Ressource bleibt bis zum Ende des Scripts erhalten, bzw. bis zu einer vorzeitigen Löschung über mysql_free_result($qHotels)

06.03.2007 09:15

3 schurik

Hallo Jörg,

Danke für die Antwort.

Dann verstehe ich nicht warum die while() schleife nicht ein zweites mal funktioniert.

z.B.:

1. Alle Hotels Anzeigen:

<?php

while ($rowHotelData = mysql_fetch_array($qHotels))
{

echo (''.$rowHotelData[hotelname].'');

}

?>

AUSGABE:

Hotel Weinmichel
Hotel Waldfriede
u.s.w.

Wenn ich jetzt nach dieser Schleife noch ein mal die Daten aus der Variable rauslesen will passiert nichts:


<?php

while ($rowHotelData = mysql_fetch_array($qHotels))
{

echo (''.$rowHotelData[hotelname].'');

}

?>

Ausgabe:

NIX

//////////////////////////////

Es ist bei meinem Script so, dass ich am Anfang der Ausgabe alle Hotel_IDs für eine URL brauche und dann mit der Schleife Hotels ausgebe, aber 2 Schleifen gehen bei mir nicht mit der selben Variable.

Wie kann ich den beliebig oft zugreifen?

das ist hier warscheinlich so eine 1A Frage aber ich komme nicht weiter



06.03.2007 22:26

4 Rudy

Mach vor der 2. Schleife mysql_data_seek($rowHotelData, 0); um den MySQL-Ergebniszeiger wieder auf den ersten Datensatz zu stellen.

übrigens: mysql_fetch_row ist schneller als mysql_fetch_array.

z.B. könntest Du anstatt zu schreiben

while($rowdata = mysql_fetch_array($res)) {
  echo $rowdata["hotel"];
  echo $rowdata["ort"];
}

es so machen:

while(list($hotel, $ort) = mysql_fetch_row($res)) {
  echo $hotel;
  echo $ort;
}

Die Performance der mysql_fetch-Befehle verhält sich mysql_fetch_row > mysql_fetch_array > mysql_fetch_object, der Unterschied ist oft beträchtlich.

06.03.2007 22:41 | geändert: 06.03.2007 22:47

Beitrag schreiben (als Gast)





[BBCode-Hilfe]