Задать вопрос

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

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

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


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

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

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

Похожие вопросы