У меня есть запрос на добавление столбцов в базу данных на моем Node-сервере:
const query = 'ALTER TABLE ' + mysql.escape(tableData[i]) + ' ADD ' + mysql.escape(attributeData[0]) + ' FLOAT DEFAULT NULL;'
Если я использую запрос без mysql.escape()
, он добавляет столбцы, как и положено. Однако при использовании функции escape для предотвращения инъекций sql она больше не работает. Почему это так?
Вот пример запроса с escape-функцией, он не возвращает ошибок, но также не добавляет столбец в таблицу:
ALTER TABLE '1$0_Test_2018' ADD 'Eigenschaft_3' FLOAT DEFAULT NULL;
Этот запрос работает отлично, однако я хочу убедиться, что экранированы пользовательские данные:
ALTER TABLE 1$0_Test_2018 ADD Eigenschaft_3 FLOAT DEFAULT NULL;