2016-03-28 45 views
0

當沒有設置值時,我將更新數據庫中的值。如果沒有設置值,我將在數據庫中更新一個值。

我有這樣的代碼:

items.forEach(function(item,i,arr){ 
    mysqlConnection.query('UPDATE `SkinBank` SET `AssetID`=\'' + item.assetid + '\', `Status`=\'market\' WHERE `Status`=\'open\' AND `Tradeoffer` = \'' + offer.id + '\' AND `SkinName` = \'' + item.market_hash_name + '\'', function (err, row, fields) {}); 
}); 

當我把比具有item.assetid 2「項目」(如:第1項具有= 123123和項目2具有= 987987),比所有的兩項誰擁有沒有得到像123123或987987那樣相同的Assetid值。

我怎麼能做到,他給每個項目一個AssetId。

在此之前,列「由assetid」無關,在那裏

+0

看看你'item'陣列 - 在'由assetid '對於該陣列中的每個項目必須相同。這個問題可能在這條線的上游。 – pherris

+0

@pherris在項目數組中是2個項目,包含2個不同的元素。如果我做了「console.log(item.assetid)」,我就變成了兩個不同的ID。但在數據庫中,他將1個assetid設置爲2項...... – Scholli

回答

0

我猜你WHERE子句匹配的行數太多。目前尚不清楚你使用的庫,但如果你正在使用node-mysql可以輸出在回調函數更新的行數:

connection.query('UPDATE `SkinBank` SET `AssetID`=\'' + item.assetid + '\', `Status`=\'market\' WHERE `Status`=\'open\' AND `Tradeoffer` = \'' + offer.id + '\' AND `SkinName` = \'' + item.market_hash_name + '\'', function (err, result) { 
    if (err) throw err; 

    console.log('changed ' + result.changedRows + ' rows'); 
}) 

https://github.com/felixge/node-mysql#getting-the-number-of-changed-rows

+0

它表示:「更改了2行,而不是 更改了0行」。我怎麼能讓他改變1,而不是1? – Scholli

+0

這就是問題所在,你沒有在你的'WHERE'子句中匹配正確的行來更新。可能需要將該列的ID添加到update語句中。 – pherris

+0

但是如何?我有列:ID,ItemName,Assetid - ItemName可以相同,Assetid必須爲每個Item更新。 AssetId不同,必須有所不同。在此foreach中更新AssetID。 ID爲1並自動計數 – Scholli

相關問題