A melhor maneira de evitar injeções é usar Declarações Preparadas .
Para declarações preparadas eu prefiro usar PDO para lidar com todas as minhas coisas de banco de dados. aqui está um código de exemplo de PDO que escrevi para recuperar algumas informações básicas de login:
$sql=new PDO("mysql:host=127.0.0.1;dbname=name","user","password");
$user=$_POST[user];
$query="select Salt,Passwd from User
where Name=:user";
$stmt=$sql->prepare($query);
$stmt->bindParam(':user',$user);
$stmt->execute();
$dr=$stmt->fetch();
$sql=null;
$password=$_POST[pass];
$salt=$dr['Salt'];
... etc
Leia este página para obter mais informações sobre o DOP. Se você quiser saber o que cada linha de código aqui está fazendo, leia este resposta que dei para outro post.