@valentine11

SQL-запросы в JS-коде, экранировать спецсимволы или нет?

Добрый день!
Автоматизирую процесс тестирования с Node.js и Selenium-wd.
Перед и после блоков тестов выполняются запросы к бд (создание предусловий или очистка бд).
Запросы хранятся в переменных в строковом виде.
Возникает проблема одинарых кавычек.
Поясню на примере:
needForReg = 'INSERT INTO `billing_payment_gateway` (--\
             `id`, `name`, `route`, `description`, `is_active`, `is_deleted`--\
			 ) VALUES (--\
			 1, 'interkassa', 'InterkassaGateway', '', 1, 0);'

Дойдя до 'interkassa' строка прервется и далее пойдет всякая ахинея.
Пока решила проблему экранированием кавычек:
needForReg = 'INSERT INTO `billing_payment_gateway` (--\
             `id`, `name`, `route`, `description`, `is_active`, `is_deleted`--\
			 ) VALUES (--\
			 1, \'interkassa\', \'InterkassaGateway\', \'\', 1, 0);'

Но это тольк часть запроса, и есть запросы куда более длинные, экранирование кавычек утомляет и вообще выглядит не очень.
Можно решить проблему элементарным заключением строки запроса в двойные кавычки. и мне это решение нравится.
needForReg = "INSERT INTO `billing_payment_gateway` (--\
             `id`, `name`, `route`, `description`, `is_active`, `is_deleted`--\
			 ) VALUES (--\
			 1, 'interkassa', 'InterkassaGateway', '', 1, 0);"

Но корректно ли оно? Что с безопасностью в таком случае? Или, может быть, есть решения для автоматического экранирования, если без него никак? Я в этом всем пока плаваю, знания очень поверхностные.
  • Вопрос задан
  • 1341 просмотр
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Двойные кавычки отличаются от одинарных лишь отсутствием перевода строк (нельзя экранировать новую строку).
Вполне можно вынести запросы в отдельные файлы с расширением .sql - так их и IDE будет подсвечивать синтаксис
считывать файлы в память можно при старте приложения в синхронном режиме, а чтоб файлов было не много можно реализовать парсер дабы в одном файле держать несколько запросов
Ответ написан
Ваш ответ на вопрос

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

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