mysql转义字符串 Node js`

标签 mysql node.js sql-injection

所以我使用 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/

相关文章:

php - 如何使用 PHP 将 HTML 表单提交到 MySQL,并在提交时刷新(AJAX?)

php - 如何在 CodeIgniter 中将上传的文件(PDF、DOC 等)显示为可下载链接

node.js - 创建日志文件,文件名中包含日期/时间

php - SQL注入(inject)绕过mysql_real_escape_string()

php - 如何使用 SQL 查询 COUNT 显示行数

node.js - 访问 cloud9 上的 node/locomotive.js 服务器会重定向到signin.html

javascript - Protractor 无法访问其类共享其他元素的特定元素

php - 带有多个可选搜索词的参数化查询

SQLMAP - 将 JSON 数据作为正文发布

mysql - 错误 2006 MySQL 服务器已消失并带有 8GB 文件