Потому, как если пользователю нужно ввести числовое поле, а он вводит 32a -> ему нужно явно указать на ошибку.
поэтом is_numeric только.
А вообще раньше изучая php мне нравилось, что нет привязки к типам данных, а вот сейчас когда более менее разобрался что к чему и словил парочку взломов, то без типизированных переменных в некоторых моментах получается не очень хорошо.
Используйте PDO и prepared statements - будет вам счастье. Сейчас многие фреймворки работают с БД именно через PDO. Если все значения задавать через плейсхолдеры (в PDO), то _теоретически_ это исключает возможность SQL-инъекции.