转义值时,MySQL查询不再起作用

时间:2019-06-13 08:01:33

标签: javascript mysql node.js mysqljs

我有查询要向我的节点服务器中的数据库添加列:

const query = 'ALTER TABLE ' + mysql.escape(tableData[i]) + ' ADD ' + mysql.escape(attributeData[0]) + ' FLOAT DEFAULT NULL;'

如果我使用它们查询时不使用mysql.escape(),则会按预期添加列。但是,当使用转义功能防止SQL注入时,它将不再起作用。为什么会这样?

这是带有转义功能的示例查询,它不返回错误,但也不会将列添加到表中:

ALTER TABLE '1$0_Test_2018' ADD 'Eigenschaft_3' FLOAT DEFAULT NULL;

此查询工作正常,但是我想确保转义用户数据:

ALTER TABLE 1$0_Test_2018 ADD Eigenschaft_3 FLOAT DEFAULT NULL;

1 个答案:

答案 0 :(得分:1)

您的问题似乎可能是转义方法返回用引号而不是反引号引起来的值。

github docs中,您似乎只需要将escape更改为escapeId

  

如果您不信任SQL标识符(数据库/表/列名)   因为它是由用户提供的,所以您应该使用   mysql.escapeId(identifier)