" когда необходимо " является ключом здесь. Будучи таким открытым, такой подход неизбежно приведет к инъекции SQL. Что такое вводимый пользователем текст? Является ли часть интерфейса введенной пользователем? Текст, полученный из базы данных, введен пользователем? Можете ли вы гарантировать, что у любого, кто работает с базой кода, будут правильные ответы?
Обработка данных для SQL должна быть равномерной и предсказуемой. И подготовленные заявления предлагают именно это.
Кроме того, «побег» не предназначен для защиты. Давая вам ложное чувство безопасности, он предаст вас при первой же возможности. Попробуйте защитить имя поля с помощью экранирования строки и посмотрите. В отличие от побега, использование подготовленных заявлений гарантирует защиту, когда это применимо.
Я бы хотел сделать свой код максимально простым заставляя себя обдумывать каждый раз, когда выполняется запрос, «необходимо ли экранировать введенный пользователем текст или нет?»
Наконец, чтобы упростить повторяющуюся задачу, существует определяемая пользователем функция на помощь. Просто напишите функцию, которая объединяет подготовку / связывание / выполнение в одном вызове, а затем используйте ее, чтобы сделать код приложения максимально простым и понятным.