所以我使用 Node js,我有以下 mysql 查询,我使用 npm mysql 库来处理查询。
let userName = req.body.userName;
let sqlStatement = `SELECT COUNT(*) AS exist FROM user where username=${userName}`;
是新的es6语法自动防止mysql注入(inject)。 因为当我这样做时
let userName = req.body.userName;
userName = connection.escape(userName);
let sqlStatement = `SELECT COUNT(*) AS exist FROM user where username=${userName}`;
它在数据库中的数据周围加上单引号,就像“myUserName”一样。有人知道为什么吗?或者新语法是否自动阻止它。
最佳答案
使用 [] 语法转义数据,如下所示
result = await database.query(
"INSERT INTO user SET ?",
[req.body],
function(error, result) {
if (!error) {
console.log("worked");
} else {
console.log(error);
}
}
);
关于mysql转义字符串 Node js`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345920/