mir: Merkwürdiges Verhalten bei mySQL Anfrage

Beitrag lesen

So ganz folgen kann ich deinen Ausführungen jetzt im Moment nicht, aber zumindest einen Fehler hast du:

For($i; $i <= $anz_neu ; $i++) { $query2 = "SELECT pid FROM planets Where sid = '$i'"; $ergebnis2 = mysql_query($query2); $num = mysql_num_rows($ergebnis2);

while($arr = mysql_fetch_array($ergebnis2)) { $array[] = $arr; }

An diesem Punkt hängst du die Ergebnisse aller der ersten folgenden Datenbankabfragen an die alten Ergebnisse an, mit denen $array immer noch bestückt isr. Deshalb bekommst du auch diese Liste:

Bei ersten Durchlauf der Hauptschleife gibt es sechs Ergebnisse, "6 7 8 9 10 11".

Beim ihrem zweiten Durchlauf erscheint "6 7 8". Dies sind die Ergebnisse aus dem ersten Durchlauf, und da der zweite Durchlauf drei Ergebnisse geliefert hat (in $num), erscheinen nur die ersten drei Daten des ersten Durchlaufs.

For($a = 0; $a < $num ; $a++) { $pid = $array[$a][0]; echo $pid.'</br>'; }

Es ist persönlicher Stil, aber mir ist schon anfangs aufgefallen, dass du viele Variablen einsetzt. Wenn ich $array durchlaufe, dann mit entweder mit array_length($array) (oder heisst das size() bei PHP?), nicht mit dem Ergebnis aus mysql_num_rows() (welches du in $num zwischengeparkt hast). Oder aber gleich mit foreach:

foreach ($array as $a) { echo $a["pid"] . "<br>"; }

Die Finger täte ich an deiner Stelle auch von den numerischen Indizes lassen. $a[0] ist nicht gerade selbsterklärend. MySQL liefert dir auch ein viel schöneres $a["pid"].