JS: SQL
Теория: Плейсхолдеры
Как правило, запросы в базу формируются динамически на основе данных, которые поступают извне. Например, создание пользователя чаще всего происходит во время регистрации. В таком случае код вставки мог бы выглядеть например так:
Составленные таким образом запросы несут в себе серьезную опасность — SQL-инъекции. Вместо обычных данных злоумышленник может отправить текст, который изменит SQL-запрос. Представьте, что внутри переменной хранилась бы такая строка:
В таком случае после подстановки мог бы получиться следующий запрос:
Фактически, вместо одного запроса получилось два. Таким образом, злоумышленник может выполнить произвольный запрос в базу данных — то есть удалить, добавить или изменить все, что ему хочется.
В разработке существует правило «Никогда не доверяй пользовательским данным» — оно особенно важно в работе с базами данных. Любые данные перед вставкой нужно экранировать с помощью подготовленных запросов.
К счастью для нас библиотека умеет обрабатывать такие случаи, ничего специально для этого делать не нужно:
Так же библиотека предоставляет функционал для формирования запросов с использованием массивов:
Метод join() позволяет объединять массивы значений в строку с использованием определенного разделителя. Обычно используется при создании списков значений для операторов IN.
Возврат идентификатора
Когда мы вставляем данные в базу, иногда нам нужно получить идентификатор вставленной записи и потом использовать его в коде. Это происходит, когда мы создаем какую-то сущность и хотим потом ее использовать, например, для формирования ссылок или вставки связанных записей.
Чтобы выполнить эту задачу, немного изменим запрос:
Рекомендуемые программы
Завершено
0 / 5



