Si estás usando un while() para imprimir un formulario por cada registro entonces no hay necesidad de usar la notación de array, ese sería un error a considerar.
Ahora, cuando recibas el formulario (una vez corregido) ¿podrías usar var_dump() para revisar qué valores vienen en el POST?
¿Viene el Id o no?