Allora, invece di
$query = @mysql_query ($sql) or die(mysql_error());

scrivi
echo $sql.'<br />';

poi esegui a mano direttamente sul db (con phpmyadmin per esempio) le 2 query che ti stampa e vedi cosa succede.