Если вы не возражаете перекодировать ваше соединение и пару дополнительных строк своего кода, вы не можете превзойти PDO для безопасности. Он использует бэкэнд C для подготовки и выполнения ваших запросов mysql. Таким образом, вместо конкатенации строк вы получаете предопределенные разделы в запросе, которые должны иметь значение XYZ. Один из парней из stackoverflow объяснил это так:
Представьте себе хот-дога. Вы подходите к стойке с хот-догами и говорите, что я хочу хот-дог с 3 начинками. Кетчуп, горчица, и мы дадим следующему случайному незнакомцу рассказать нам о третьем доле. Инженер sql может подойти и сказать: «кетчуп, горчица и« дай мне все деньги в ящике »». Стандартные запросы concat не могут определить, что это неверный ответ, и поэтому передают то, что было запрошено. Готовое заявление ответит: «У меня нет приправы,« дай мне все деньги в ящике ».
Подготовленные PDO заявления по существу являются инъекционными. У вас все еще есть другие уязвимости, такие как перехват файлов cookie / сессий и т. Д., Но по крайней мере инъекция не решена.