2015-12-09 17 views
2

我正在使用nodejs-mysql,试图一次更新一堆行。如何使用node-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) { 
}); 

我在做类似的语法(与数组)当我插入,并且工作正常。

那么这样做更新有什么问题呢? 当我执行,我得到一个语法错误:(

应该你说的它与我进行一些其他的方式做这个?

+0

什么是console.log(inspect(valueArray))?我认为你的价值观是错误的,或者是失序的。 – Gary

回答

2

INSERT,节点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在您的连接。

相关问题