where id = $id presume l'estrazione di un solo record e quindi e' inutile il ciclo while.

Invece di or die ("errore 1"); prova a mettere or die(mysql_error()); cosi' sai esattamente di che errore si tratta.