如何使用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 = ?;" 

在这种情况下,您需要在连接中允许多个语句 。