Защищает ли приведение к типу данных int от sql инъекций?
Лучше работу с БД вынести в отдельный класс. И при вызове метода, который производит запрос к БД, делать фильтрацию входных данных.
Используйте PDO и prepared statements - будет вам счастье. Сейчас многие фреймворки работают с БД именно через PDO. Если все значения задавать через плейсхолдеры (в PDO), то _теоретически_ это исключает возможность SQL-инъекции.