如何使用 node-mysql 中的数组进行更新
How do I make an update with an array in node-mysql
我正在使用 nodejs-mysql,试图一次更新一堆行。
所以,我尝试了以下代码,但运气不佳:
var sql = "UPDATE users SET Gender=?, Super=? WHERE Name=?";
var valueArray = [];
for (var idx = 0; idx < data.length; idx++) {
var char = data[idx];
valueArray.push([char[4], char[5], char[1]]);
}
connection.query(sql, [valueArray], function(err, rows) {
});
我在插入时使用了类似的语法(使用数组),而且效果很好。
所以这样做有什么问题,为了更新?
当我执行这个时,我得到一个语法错误:(
我应该以其他方式进行吗?
正如您所说,它适用于 INSERT。 node-mysql 库将您描述的带有嵌套数组的 INSERT 语句转换为一条语句,例如:
var valueArray = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']];
var sql = "INSERT INTO users SET Gender=?, Super=? WHERE Name=?";
connection.query(sql, valueArray, function(err, rows) {
// do something...
});
转换为:
INSERT INTO users
(Gender, Super, Name)
VALUES
('a', 'b', 'c'),
('d', 'e', 'f'),
('g', 'h', 'i');
然而,在 sql 中,在一条语句中更新多个实体并不那么容易。
您可以为循环中的每个条目查询数据库,或者构造一个大语句,例如:
var valueArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'];
var sql = "UPDATE users SET Gender=?, Super=? WHERE Name = ?;"
+ "UPDATE users SET Gender=?, Super=? WHERE Name = ?;"
+ "UPDATE users SET Gender=?, Super=? WHERE Name = ?;"
在这种情况下,您需要允许 multiple statements 连接。
我正在使用 nodejs-mysql,试图一次更新一堆行。
所以,我尝试了以下代码,但运气不佳:
var sql = "UPDATE users SET Gender=?, Super=? WHERE Name=?";
var valueArray = [];
for (var idx = 0; idx < data.length; idx++) {
var char = data[idx];
valueArray.push([char[4], char[5], char[1]]);
}
connection.query(sql, [valueArray], function(err, rows) {
});
我在插入时使用了类似的语法(使用数组),而且效果很好。
所以这样做有什么问题,为了更新? 当我执行这个时,我得到一个语法错误:(
我应该以其他方式进行吗?
正如您所说,它适用于 INSERT。 node-mysql 库将您描述的带有嵌套数组的 INSERT 语句转换为一条语句,例如:
var valueArray = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']];
var sql = "INSERT INTO users SET Gender=?, Super=? WHERE Name=?";
connection.query(sql, valueArray, function(err, rows) {
// do something...
});
转换为:
INSERT INTO users
(Gender, Super, Name)
VALUES
('a', 'b', 'c'),
('d', 'e', 'f'),
('g', 'h', 'i');
然而,在 sql 中,在一条语句中更新多个实体并不那么容易。 您可以为循环中的每个条目查询数据库,或者构造一个大语句,例如:
var valueArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'];
var sql = "UPDATE users SET Gender=?, Super=? WHERE Name = ?;"
+ "UPDATE users SET Gender=?, Super=? WHERE Name = ?;"
+ "UPDATE users SET Gender=?, Super=? WHERE Name = ?;"
在这种情况下,您需要允许 multiple statements 连接。