Нет мы заведомо не знаем. Можно и одним !empty(). Я б порекомендовал проверить существует ли переменная submit (будет существовать если нажмут на кнопку отправки и потом проверять каждое поле только на пустоту, но тут тоже есть заковырка переменные приведение ниже тоже считаются пустотой)
Ну смотрите топ по количеству уязвимость по конкретной уже подчитывайите как она работает и какии способы защиты.
1. sql injection
2. xss
etc.
Так же желательно скрывать инфу о сервере.Какой язык используется/какая ос используется/используется ли апач или еще что то/подключить cloudfre etc. и потом сменить ип-его не будут знать извне/использовать последние версии php 5.5 5.6
Имеет, не усложнить пиши те обертку и ее пользуйтесь. Данные все надо проверять перед запросом.
Для лучшей производительности если у вас mysql база используйте mysqli.
Для защиты от sql-injection habrahabr.ru/post/148701 все разжевано.