2015-12-09 16 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在您的連接。

相關問題