mysql - 将变量传递给 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) =>
我想我错过了什么,有人可以帮忙吗?
解决方案
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)
});
推荐阅读
- docker - Keycloak Docker 导入用户
- php - CTF 类型杂耍与成熟 md160 哈希
- vb.net - VB.net 应用程序只能以管理员身份运行
- html - 我如何在表单中向用户建议密码
- oracle - 如何结合使用 Oracle 云基础设施 MYSQL DB 和 XDev API?
- postgresql - ts_rank 什么时候返回值 1
- java - 为什么我的程序在 main 中调用时不接受方法中的 int[] 参数?
- mbaas - 第一次在appwrite mbaas中如何注册?
- angular - 403错误没有被catchError函数Angular 7捕获
- apache-kafka - Kafka:sendOffsetsToTransaction 与多个消费者