Se mysql_query retornasse NULL, isso seria um bug no PHP. Como você sabe que está realmente retornando NULL?
Para instruções de atualização, mysql_query deve retornar apenas TRUE ou FALSE. Portanto, seu código de verificação de erros está bem. Para descobrir o que deu errado, você terá que chamar outra função - mysql_error() lhe daria uma sinopse sobre o que deu errado. Então imprima o valor de mysql_error() dentro do seu bloco false. Assim:
echo 'failed. SQL Err: '. mysql_error()
Faça isso e você provavelmente terá uma pista de como 'o registro foi atualizado, mas o valor de retorno é falso'. Não deveria ter acontecido.