Ответ 1
Нет, подготовленные запросы (при правильном использовании) обеспечат правильное экранирование данных для безопасного запроса. Вы как бы правильно их используете, просто нужно изменить одну мелочь. Потому что вы используете '?' placeholder, лучше передать параметры через метод execute.
$sql->execute(array($consulta));
Просто будьте осторожны, если вы выводите это на свою страницу, санация базы данных не означает, что она будет безопасной для отображения в HTML, поэтому запустите также htmlspecialchars().