Moin,
als erstes möchte ich mitteilen dass ich kein Freund von verschachtelten Befehlen bin so wie das hier if($variable = irgendwas()). Spätestens beim Debuggen muss man die Struktur wahrscheinlich ändern.
Und schon sind wir bei deinem Problem. Was in der Datenbank ist und was durch einen Query im PHP Ankommt sind nun mal zwei verschiedene Sachen. Deshalb wäre es sehr interessant zu wissen, welche Ergebnisse dein Query tatsächlich liefert. Sind es mehr als 1 Eintrag ist irgendwas bei der Whileschleife falsch, ist es nur 1 Eintrag du erwartest aber mehr ist dien Query falsch.
Dritte Möglichkeit wäre noch das beide Sachen stimmen, deine Erwartungen jedoch falsch sind.
Gruß
Erwartungsfreier
T-Rex