我有三个变量想要更新到 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/