Лентяй,
1) потому что меня еще давно учили, что если переменная приходит из вне цифрой, то можно смело не экранировать её, а лишь обернуть функцией intval(). Да даже сам запрос короче.
2) А разве хотя бы ещё один способ защиты от инъекции кроме prepare и bind?
Я рассматривал такой вариант. А касаемо замены, как я указал, теоретически ничего ведь страшного не будет? Менять старый код хотели дня за 3. Получается сайт будет работать на таком вот режиме. Так то всё работает. Но я же не знаю, нормально ли это и не поломается ли он в итоге где-то.