Tl; DR Это очень плохая идея.Вы вводите долгосрочный риск, чтобы сэкономить несколько секунд кода.Весьма вероятно, что вы рано или поздно введете риск внедрения SQL-кода по мере развития вашего кода и данных.
Если вы:
- чрезвычайноосторожно относитесь к проверке ваших данных,
- крайне осторожно относитесь к построению ваших запросов,
- абсолютно уверены, что ваши данные в безопасности и не содержат любого ввода пользователя (из любого источника)вообще, включая формы, датчики, API-интерфейсы, чистящие веб-сайты и т. д.) и
- абсолютно уверены, что никто никогда не изменит ваши данные или ваш код (или не использует ваш код ненадлежащим образом), , включаяВы ,
Тогда мы можем сказать:
- было бы безопасно выполнять запросы без подготовленных операторов, и - и это важная часть -
- вы бы жили в мире фантазий.
Вы можете никогда предполагать безопасно , что вы можете избежать подготовкизаявления.Весьма вероятно, что ваш код сломается, если вы это сделаете.Вы можете получить неверные данные, пропустить проблему, каким-то образом изменить код, переназначить код для чего-то небезопасного или совершить множество других ошибок.Вы можете в конечном итоге выполнить безвредную инъекцию SQL (скажем, с помощью имени или орфографии, например O’Brien
), или вас могут взломать ...
... и все, чтобы сэкономить несколько секунд времени на кодирование..
Краткая версия: либо (1) используйте подготовленные операторы для каждого запроса , который имеет какую-либо переменную информацию, либо (2) непросто понять, почему это правило.