Есть ли смысл использовать параметризованный запрос, если в запросе не используются данные, предоставленные пользователем?

Например, мне нужно инициализировать базу данных, т.е. выполнить несколько запросов типа "CREATE TABLE". Никакие "placeholders" в запросе использоваться не будут. Может быть лучше использовать обычный $connection->query($query)?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега PHP
Вопрос с подвохом.
Потому что "данные, предоставленные пользователем" может означать что угодно. Поэтому формулировать надо так:

Надо использовать параметризованный запрос, если в запросе не используются переменные?


И тогда ответ будет простой и очевидный - нет, не надо.
Это очень простое правило: используются в запросе переменные? Используем подготовленный запрос и передаем через плейсхолдер. Не используются? Можно использовать query()

В качестве исключения, в запрос можно включать переменные, значения которых явно прописаны в коде, и не меняются.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@kirill-93
Можно использовать query, если так удобнее. Placeholders защищают от SQL-инекций, если запрос вы пишите сами, то они не нужны.
Ответ написан
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
Ну если вы пишите их прям ручками то конечно тут не нужны подготовленные запросы. Но даже если вы используете хоть какой-то builder или запросы строятся как-то динамически то плейсхолдеры намного упрощают все эти дело
Ответ написан
firedragon
@firedragon
Senior .NET developer
Делайте одинаково по всему проекту, не будет вопросов как.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы