我查询将列添加到节点服务器中的数据库中:

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;

最佳答案

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

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


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

关于javascript - 转义值时,MySQL查询不再起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56575945/

10-16 18:48
查看更多