Я использую гораздо более простой и удобный для чтения метод:
$sql = 'SELECT * FROM TABLE_NAME WHERE idUser = ' . intval($idUser);
Он пытается преобразовать $ idUser в целое число, и при ошибке возвращает 0, которое ни одна из моих таблиц не имеет в качестве реальных идентификаторов. (Так что я знаю, что ввод был недействительным, если он оценивается как 0.)
Чтобы ответить на ваш актуальный вопрос, нет, это не оставит никаких открытых отверстий. Я предлагаю избавиться от повторяющегося кода, хотя:
$idUserIN_filtered = filter_var($idUserIN, FILTER_VALIDATE_INT);
if (isset($idUserIN)
&& $idUserIN_filtered
&& 0 < $idUserIN_filtered
) {
$sql = 'SELECT * FROM TABLE_NAME WHERE idUser = '.$idUser_filtered;
} else {
// handle invalid data
}