В этом нет никаких таинственных секретов.
Суть просто в том, что БД лучше тебя знает, как экранировать те или иные данные.
И, что очень важно - не забывает этого делать.
Поэтому вместо ручного экранирования ты просто должен отдать пдо свои переменные, а дальше он все сделает сам.
Вот и все.
Да, при этом появляется небольшое неудобствопри использовании динамических запросов.
Да, надо составить сначала весь запрос целиком с плейсхолдерами, и параллельно к этому составлять массив с данными.
При небольшой тренировке это не составляет ни малейшей проблемы.
Если так прямо очень сложно запомнить, какая переменная куда идет, специально для этого в пдо есть именованные плейсхолдеры.