首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点Mysql转义- Mysql.Escape() / Mysql.EscapeId()

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

Stack Overflow用户
提问于 2018-02-27 18:29:13
回答 2查看 4.3K关注 0票数 3

我使用的是mysql-node:https://github.com/mysqljs/mysql,但我对默认的清除、Mysql.Escape()Mysql.EscapeId()以及???的使用有些困惑。医生说的?

默认消毒

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

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

UPDATE table SET updated_at = userInput WHERE name = userInput

Mysql.Escape() vs Mysql.EscapeId()

这两种功能的区别是什么?医生说mysql.escape使用mysql.escapeId。我知道它们都能消毒输入,但有使用其中一种的情况吗?

?vs?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-01 00:19:14

我与mysqljs的维护者进行了交谈,并确认默认情况下这个包不会逃避查询。

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

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

代码语言:javascript
复制
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()用于值。

票数 3
EN

Stack Overflow用户

发布于 2018-02-27 23:52:38

文档描述了The ()和escapeId()所做的事情。当您需要转义值时,请使用转义()。当您需要转义标识符时使用escapeId() (例如表、数据库或列名)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49015570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档