Se usado em todos os lugares corretamente, real_escape_string é uma opção. Mas considere o seguinte código:
$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ' . mysqli_real_escape_string($page);
Seguro ou não? real_escape_string só pode ser usado para escapar de strings entre aspas.
$page
pode ser 1 OR id IN (2,3,4,5,6,7,8,9)
→ sem aspas, sem escape real. A conversão para o tipo de dados correto (int) pode ajudar nesse caso. É melhor usar declarações preparadas, elas não são tão fáceis de serem mal utilizadas.