mysql_fetch_assoc = temporär?

Asteria

Mitglied
Hallo zusammen !

Mit diesem Fehler hier bin ich nun wirklich mächtig überfordert!!
Folgender Code:

Code:
  // Auslesen der angreifenden Einheiten / Truppen:
  $qtroups = mysql_query ("SELECT nahkampf, fernkampf, reiterei, sonst FROM journey WHERE start LIKE '$targkoords' AND status1 LIKE '$check'") OR die(mysql_error()) ;
  while( $temp2 = mysql_fetch_assoc($qtroups) )
  {
   $inf_array = explode("#",$temp2["nahkampf"]) ;
   $arc_array = explode("#",$temp2["fernkampf"]) ;
   $cav_array = explode("#",$temp2["reiterei"]) ;
   $son_array = explode("#",$temp2["sonst"]) ;
   // Backup für Endberechnung
   $inf_array2 = explode("#",$temp2["nahkampf"]) ;
   $arc_array2 = explode("#",$temp2["fernkampf"]) ;
   $cav_array2 = explode("#",$temp2["reiterei"]) ;
   $son_array2 = explode("#",$temp2["sonst"]) ;
  }

Eigentlich werden nur Variblen definiert, aber als das
Endergebnis später im Script falsch war, hab ich
Code:
   foreach($cav_array as $unit)
                 { echo $unit.'<br />' ; }  die() ;
eingefügt um die Variablen zu prüfen..
Und dabei kam Folgendes raus:

Wenn ich den foreach innerhalb des whiles ausführe ist die Ausgabe: 17,0,0
außerhalb des whiles ist die Ausgabe allerdings 0,0,0.
17#0#0 steht auch in der Tabelle ist daher richtig. Wo sind die hin?! :o
 
Wenn du die foreach in der Schleife ausführst, hast Du da mehrere ergebnisse? Wenn ja kann es sein das die einfach überschrieben werde und du Auserhalb der Schleife dann halt den Letzten wert bekommst.
 
Mit jedem Durchgang in der while-Schleife wird $cav_array überschrieben. Wenn also dein SQL mehr als ein Resultat zurückgibt, dann hast du nach der Schleife der Wert der letzten SQL-Resultat-Zeile.

Wenndu mehr als ein Resultat aus dem SQL haben willst, dann solltest du mit Arrays arbeiten
 
Erstmal danke euch zwei.
Was Yaslaw sagte, stimmte auch genau.
Hab den SELECT etwas geändert und es gibt nur noch ein Ergebnis,
so dass die Ausgabe auch wieder stimmt.

Was ich allerdings nicht verstehe..
..warum war die Ausgabe in der Schleife trotzdem 17,0,0
und nicht 17,0,00,0,0? Die Schleife wurde 2 mal durchlaufen,
aber es gab nur eine Ausgabe seltsamerweise ?! :o
 
Zurück