Letto cosi' mi sembra tutto giusto...

prova ad aggiungere all'inzio:
codice:
error_reporting (E_ALL);
cosi' se c'e' un errore ti scrive i dettagli.

Inoltre se si inchioda (ovvero loopa) riguarda la query che comunque sembra corretta e banale.

Anzi scrivila con
codice:
print "<HR>ecco la query---> $sql <HR>";
poi vai in phpmyadmin e prova ad inserirla dopo averla copiata-incollata per vedere quello che fa...