我有一个查询,用于将列添加到我的 Node 服务器中的数据库:
const query = 'ALTER TABLE ' + mysql.escape(tableData[i]) + ' ADD ' + mysql.escape(attributeData[0]) + ' FLOAT DEFAULT NULL;'
如果我使用它们在没有 mysql.escape()
的情况下进行查询,它会按预期添加列。然而,当使用转义函数来防止 SQL 注入(inject)时,它不再起作用。这是为什么?
这是一个使用转义函数的示例查询,它不返回错误,但也不将列添加到表中:
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
。
If you can't trust an SQL identifier (database / table / column name) because it is provided by a user, you should escape it with mysql.escapeId(identifier)
关于javascript - 当转义值时,Mysql 查询不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56575945/