Letto cosi' mi sembra tutto giusto...
prova ad aggiungere all'inzio:cosi' se c'e' un errore ti scrive i dettagli.codice:error_reporting (E_ALL);
Inoltre se si inchioda (ovvero loopa) riguarda la query che comunque sembra corretta e banale.
Anzi scrivila conpoi vai in phpmyadmin e prova ad inserirla dopo averla copiata-incollata per vedere quello che fa...codice:print "<HR>ecco la query---> $sql <HR>";