login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MySQL resultset gebruik (Opgelost)

Offline Sitebase - 11/02/2009 10:00
Avatar van SitebasePHP expert Weet er iemand hoe je een mysql resultset meerdere malen kan gebruiken zonder dat de query opnieuw uitgevoerd moet worden?

Zie het voorbeeld hieronder. De eerste while doet hij goed maar bij de tweede while is de resultset($result) ineens leeg.

  1. $query = "SELECT * FROM txmembership";
  2. $result = mysql_query( $query) or die (mysql_error());
  3. while($row = mysql_fetch_object($result)){
  4. echo $row->Name;
  5. }
  6.  
  7. echo "<br /> ------------------------------------ <br />";
  8.  
  9. while($row = mysql_fetch_object($result)){
  10. echo $row->Name;
  11. }

5 antwoorden

Gesponsorde links
Offline Ontani - 11/02/2009 10:03
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
En als je nu die resultset in een variabele steekt en dan gewoon met een for each alle rijen binnen die variabele doorloopt.
Offline Sitebase - 11/02/2009 10:21
Avatar van Sitebase PHP expert Je maar het het probleem is dat mysql_fetch_object en al de rest van die fetch methods gebruikt moeten worden in een while omdat deze werken met een iterator.

Als er een mogelijkheid is om de volledige resultset in een array te steken dan zou het inderdaad moeten gaan.

Ik heb ook al eens geprobeerd de pointer van de resultset te resetten maar zonder succes.
Offline Ontani - 11/02/2009 10:26
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
ja ik vind het ook jammer dat php geen mogelijkheid heeft om met volledige datasets te werken.

  1. while($row = mysql_fetch_object($result)){
  2. $dataset[] = $row;
  3. }
  4. print_r($dataset);


vervolgens kan je overal $dataset gebruiken.
Offline Sitebase - 11/02/2009 10:32
Avatar van Sitebase PHP expert Dat zou inderdaad een oplossing zijn Alders maar ik heb een nog eens wat zitten testen en ik heb er een betere gevonden  .

Achter je while zet je het volgende:

  1. mysql_data_seek($result, 0);


Hierdoor zal de pointer van de resultset terug op het eerste record gezet worden. Hierna kan terug een while doen met dezelfde resultset.
Offline Ontani - 11/02/2009 10:34
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Komt dus op hetzelfde neer alleen heb je de mogelijkheid om mysql_fetch_object te gebruiken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s