javascript - 为什么我不能用字符串更新 MySQL?

标签 javascript node.js

我有三个变量想要更新到 mysql 数据库。

var rank = "Bronze II";
var wins = 304;
var level = 51;

为什么我无法使用 Bronze II 字符串更新数据库?如果我将其更改为数字,它就可以工作。

pool.getConnection(function(err, connection) {
    if (err) throw err;
    connection.query("UPDATE Users SET Rank = " + rank + ", Wins = " + wins + ", Level = " + level + " WHERE SteamID64 = " + `${row.SteamID64}` +"");
    connection.release();
    if (err) throw err;
});

最佳答案

您应该使用准备好的查询。

connection.query('UPDATE users SET foo = ?, bar = ?, baz = ? WHERE id = ?', ['a', 'b', 'c', userId], function (error, results, fields) {
    if (error) throw error;
    // ...
});

使用您的数据:

connection.query("UPDATE Users SET Rank = ?, Wins = ?, Level = ? WHERE SteamID64 = ?", [ rank, wins, level, row.steamID64 ]);

这将提高您应用程序的安全性,并帮助您避免将来出现类似问题。 (想象一下,如果您的数据内部有一个 " 字符?)

您应该对所有依赖外部输入的查询执行此操作,而不是连接字符串。

关于javascript - 为什么我不能用字符串更新 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901060/

相关文章:

javascript - 使用 Mocha 测试数组的断言错误

javascript - 如何在 Controller 文件中使用 socket.io

javascript - 对目录的非法操作,打开

javascript - 在没有json解析的jade中输出服务器生成的json对象

javascript - 拖放表格单元格并使用 ajax 更新数据库

javascript - 外部脚本在 Windows Phone App 8.1 中不起作用

node.js - 理解和实现 Promise 和异步事物如何与循环一起工作存在问题

node.js - `npm test` 永不退出

Javascript 获取日期问题

javascript - 加载新内容的加载栏