Tach!
Die Schleife funktioniert solange die beiden auskommentierte Datenbankanweisungen nicht aktiv sind.
Du belegst die Variable $statement im Inneren mit anderem Inhalt, obwohl der ursprüngliche noch in der äußeren Schleife benötigt wird.
Unabhängig davon: Prepared Statements sind so geschaffen, dass man nur einmal präparieren muss, wenn man mehrfach INSERT ausführen möchte. Die Prepare-Anweisung kann vor deshalb das while (und muss eine eigenen Variable bekommen).
dedlfix.