2017-05-16 110 views
0

我正在使用Node.js和MySQL。一切工作正常,但我在使用UPDATE查詢時遇到問題。使用MySQL和Node.js更新查詢

My database table looks like this: 

id  | employeeId 
54027 | 8241 
63708 | 3421 
393835 | 3687 

要檢查是否有外部的更新,我使用下面的代碼發送到API的請求:

const obj = response.data.map(function(item) { 
     return { id: item.entryId.id, employeeId: item.employeeId.id }; 
}); 

這方面的一個的console.log,返回如下:

[ { id: 54027, employeeId: 8242 }, 
    { id: 63708, employeeId: 3422 }, 
    { id: 393835, employeeId: 3688 } 
] 

因此,由於我的API調用返回的數據與我的數據庫中的數據不同,因此我想使用以下代碼向MySQL發出UPDATE查詢:

const query = connection.query('UPDATE entries SET employeeID = ? WHERE entrieId = ?', obj, 
(error, results, fields) => { 
    if (error) console.log(error); 
    else { 
     console.log('Updated!'); 
    } 
}); 

我得到一個錯誤,說我使用了錯誤的SQL語法,然後我得到這個底部:

UPDATE entries SET employeeID = ID = 54027,僱員= 8242 WHERE entrieId = ID = 63708,僱員= 3422

我一直在下面的教程和在論壇/文檔中發現的其他建議是發佈UPDATE的最佳正確方法,並且我的結果讓我感到困惑。

+0

您沒有正確綁定參數。你實際上想要執行什麼查詢? –

+0

我試圖更新數據庫中的每一行,其中ID等於來自API調用的ID,然後更新行employeeID。 –

+0

基本上,這會導致相同的錯誤 - 它只是循環顯示錯誤3次。 –

回答

0
let query = ''; 
for(var i = 0, len = obj.length; i < len; i++) { 
query += 'UPDATE entries SET employeeID ='+obj[i]['employeeID']+' WHERE entrieId = '+obj[i]['id']+';' 
} 
connection.query(query, 
(error, results, fields) => { 
    if (error) console.log(error); 
    else { 
     console.log('Updated!'); 
    } 
}); 
0

當格式化SQL查詢時,JSON對象變成key = 'val'對。看看https://github.com/mysqljs/sqlstring#escaping-query-values。考慮下面的代碼,

var data = {email: "[email protected]", status: 2} // consider some dummy data 
var formattedQ = SqlString.format("UPDATE users SET ? WHERE id = 34", data); 

// formattedQ would be: 
"UPDATE users SET `email` = '[email protected]', `status` = 2 WHERE id = 34" 

對於您的問題,您應該使用含有employeeIdid值的數組。

var data = [8242, 54027] // 8242 is employeeId and 54027 is id. 
var q = "UPDATE entries SET employeeID = ? WHERE entrieId = ?"; 
connection.query(q, data, (err, results, fields) => { 
    // Your code here 
}); 

// This would execute the following formatted query: 
UPDATE entries SET employeeID = 8242 WHERE entrieId = 54027