Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mysql查询不';转义值时不再工作_Javascript_Mysql_Node.js_Mysqljs - Fatal编程技术网

Javascript Mysql查询不';转义值时不再工作

Javascript Mysql查询不';转义值时不再工作,javascript,mysql,node.js,mysqljs,Javascript,Mysql,Node.js,Mysqljs,我有向节点服务器中的数据库添加列的查询: const query = 'ALTER TABLE ' + mysql.escape(tableData[i]) + ' ADD ' + mysql.escape(attributeData[0]) + ' FLOAT DEFAULT NULL;' 如果我不使用mysql.escape()而使用它们查询,它会按预期添加列。但是,当使用escape函数来防止sql注入时,它不再起作用。为什么呢 下面是一个带有escape函数的示例查询,它不返回错误,但

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

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'添加'Eigenschaft_3'浮动默认值NULL;
此查询工作正常,但我希望确保转义用户数据:

更改表1$0\u Test\u 2018添加了Eigenschaft\u 3浮动默认值NULL;

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

在中,看起来您只需要将
escape
更改为
escapeId

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


什么是示例数据?@Jacquesジャック OP没有提到错误,他们只是说代码不起作用。@JackBashford你是对的,但我相信你的25k代表,你和我都知道,细节如此稀疏的问题往往会遗漏重要信息,如示例数据、错误。等等。示例数据点是在第一条评论中请求的,OP声明他们“没有错误”。啊,我在文档中发现了这一点:
如果您不能信任SQL标识符(数据库/表/列名),因为它是由用户提供的,那么您应该使用mysql.escapeId(标识符)对其进行转义
因此,将列/表名称的代码中的
escape
更改为
escapeId