htmlentities() é desnecessário para tornar os dados seguros para SQL. É usado ao ecoar valores de dados para saída HTML, para evitar vulnerabilidades XSS. Essa também é uma questão de segurança importante da qual você precisa estar atento, mas não está relacionado ao SQL.
addlashes() é redundante com mysql_real_escape_string. Você terminará com barras invertidas literais em suas strings no banco de dados.
Não use citações mágicas. Esse recurso foi preterido por muitos anos. Não implante código PHP em um ambiente onde as aspas mágicas estejam habilitadas. Se estiver ativado, desligue-o. Se for um ambiente hospedado e eles não desativarem as aspas mágicas, obtenha um novo provedor de hospedagem.
Não use
ext/mysql
. Ele não oferece suporte a parâmetros de consulta, transações ou uso OO. Atualização:
ext/mysql
foi preterido no PHP 5.5.0 (2013-06-20) e removido no PHP 7.0.0 (2015-12-03). Você realmente não pode usá-lo. Use PDO e torne suas consultas mais seguras usando consultas preparadas .
Para obter mais detalhes sobre como escrever SQL seguro, leia minha apresentação Mitos de injeção de SQL e Falácias .