Node.js 节点Mysql转义-Mysql.Escape()/Mysql.EscapeId()

Node.js 节点Mysql转义-Mysql.Escape()/Mysql.EscapeId(),node.js,node-mysql,mysqljs,Node.js,Node Mysql,Mysqljs,我使用的是mysql节点:但我对默认的清理有点困惑,mysql.Escape()vsmysql.EscapeId(),以及?vs?的使用。医生说 默认清理 将对象传递给.escape()或.query()时,将使用.escapeId() 避免对象键中的SQL注入 我看到了Object这个词,那么这是否意味着我仍然应该逃避这样的查询 updatetable SET updated\u at=userInput,其中name=userInput Mysql.Escape()与Mysql.Escape

我使用的是mysql节点:但我对默认的清理有点困惑,
mysql.Escape()
vs
mysql.EscapeId()
,以及
vs
的使用。医生说

默认清理

将对象传递给.escape()或.query()时,将使用.escapeId() 避免对象键中的SQL注入

我看到了Object这个词,那么这是否意味着我仍然应该逃避这样的查询

updatetable SET updated\u at=userInput,其中name=userInput

Mysql.Escape()与Mysql.EscapeId()的比较
这两种功能的区别是什么。文档说mysql.escape使用mysql.escapeId。我知道它们都会对输入进行消毒,但您是否会使用其中一种

?vs???

文档可以互换使用
。它们的意思是一样的吗

文档描述了escape()和escapeId()的功能。需要转义值时,请使用escape()。需要转义标识符(例如表、数据库或列名)时,请使用escapeId()

文档描述了escape()和escapeId()的功能。需要转义值时,请使用escape()。需要转义标识符(例如表、数据库或列名)时,请使用escapeId()

我与mysqljs的维护人员进行了交谈,并确认该包在默认情况下不会逃避查询

将对象传递给.escape()或.query()时,将使用.escapeId() 避免对象键中的SQL注入

上面的语句意味着如果使用以下方法之一,查询将被转义

let args = { name: 'myname' otherVals: 'blah blah'}; 
mysql.query('Insert INTO table SET ?',args);

let name = 'test'; 
mysql.query('INSERT INTO table SET name = ?', [name]);

对于问题的第二部分:
escapeId
用于标识符,
escape()
用于值

我与mysqljs的维护人员进行了交谈,并确认该包在默认情况下不会逃避查询

将对象传递给.escape()或.query()时,将使用.escapeId() 避免对象键中的SQL注入

上面的语句意味着如果使用以下方法之一,查询将被转义

let args = { name: 'myname' otherVals: 'blah blah'}; 
mysql.query('Insert INTO table SET ?',args);

let name = 'test'; 
mysql.query('INSERT INTO table SET name = ?', [name]);

对于问题的第二部分:
escapeId
用于标识符,
escape()
用于值

“插入表集”是一个非常好的技巧,应该出现在节点mysql示例中。“插入表集”是一个非常好的技巧,应该出现在节点mysql示例中。