首页 > 解决方案 > 将变量传递给 DATABASE 以防止 mysql 注入节点和 mysql

问题描述

于是,我开始在 nodejs 和 mysql 中进行开发。我在一些论坛上读到,在 mysql 中进行插入的正确方法是使用变量来防止 mysql 注入,但是我尝试了几种方法来插入它们,但我做不到。我只能手动执行它们,如下所示:

 db.query('UPDATE spreadsheetUsers SET weight="1" WHERE weekDay="1" AND idStudent="1" ', (error,results) =>

我该怎么做才能使用变量插入它们?

我尝试的方式是这样的:

 db.query('UPDATE spreadsheetUsers SET weight=? WHERE weekDay=? AND idStudent=? '
,{weight:value[0], weekDay:daySelected, idStudent:idStudent }, (error,results) =>

我想我错过了什么,有人可以帮忙吗?

标签: mysqlnode.js

解决方案


https://github.com/mysqljs/mysql#escaping-query-values

{weight:value[0], weekDay:daySelected, idStudent:idStudent }, (error,results) =>

参数化查询应该是数组而不是对象

 db.query('UPDATE spreadsheetUsers SET weight=? WHERE weekDay=? AND idStudent=?'
,[value[0], daySelected, idStudent], (error,results) =>

你也可以使用这种风格

db.query({
  sql: 'UPDATE spreadsheetUsers SET weight=? WHERE weekDay=? AND idStudent=?',
  values: [value[0], daySelected, idStudent']
}, function (error, results, fields) {
  // error will be an Error if one occurred during the query
  // results will contain the results of the query
  // fields will contain information about the returned results fields (if any)
});

推荐阅读