Per cominciare dovresti proteggere la query da attacchi di SQL Injection. Vedi:

http://php.html.it/guide/lezione/2986/sql-injections/

In secondo luogo, dovresti verificare che la query contenuta in $sql sia corretta, magari eseguendola con phpMyAdmin od altra console MySQL.

Infine dovresti inserire un codice di controllo sul valore restituito da mysql_query() prima di utilizzarlo in altre funzioni. Vedi gli esempi di http://www.php.net/mysql_query