SQL-инъекция будет невозможна, если вы используете подготовленные операторы, независимо от того, заключаете ли вы вызов функции в оператор if или нет.
Согласно документации , mysqli::prepare
возвращает false
, если во время выполнения произошла ошибка.Оператор if
предназначен для обнаружения этого, если возвращаемое значение равно false
, он не пытается продолжить выполнение запроса и использование его результата (так как это приведет к сбою или приведет к неверным результатам).
Между прочим, PDO является альтернативой семейству mysqli
и не встречается в вашем вопросе (так что название немного вводит в заблуждение).