2016-03-28 6 views
0

これが設定されていない場合、データベースの値を更新します。値が設定されていないときにmysqlが更新されている間のJavascript

私はこのコードを持っている:私はitem.assetidを持っている2「アイテム」よりも入れ

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) {}); 
}); 

:持っているすべての二つのアイテムよりも(のようなアイテム1は持っている= 123123とアイテム2は持っている= 987987)を何も123123や987987のような資産価値の値を得ることはできません。

私はどのようにして彼がすべての商品を1つのAssetIdに与えることができるのですか。この前

、コラム「AssetIDは」そこに何の関係もありません

+0

ルック - ' assetid 'はその配列内のすべての項目に対して同じでなければなりません。おそらく、問題はこの行の上流です。 – pherris

+0

アイテム配列の@pherrisは、2つの異なるassetidを持つ2つのアイテムです。私が "console.log(item.assetid)"を実行すると、私は2つの異なるidsに戻ります。しかし、データベースで彼は2つの項目に1アセットを設定... – Scholli

答えて

0

私はあなたのWHERE句があまりにも多くの行に一致していることを推測しています。それはあなたが使用しているが、あなたはnode-mysqlを使用している場合、どのようなライブラリは明らかではありません出力できコールバック関数の中で更新された行数:あなた `item`配列で

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

それは言う: " 変更された0行より2行を変更しました"。どうやって1より1を変えることができますか? – Scholli

+0

それは問題です、あなたはあなたの 'WHERE'句で更新するために正しい行と一致しません。おそらく、列のIDをupdateステートメントに追加する必要があります。 – pherris

+0

しかし、どのように?私は列:ID、ItemName、Assetidを持っています - ItemNameは同じで、Assetidは各Itemに対して更新する必要があります。 AssetIdは異なり、異なる必要があります。このforeachでAssetIDが更新されました。 IDは1で自動的にカウントアップされます – Scholli

関連する問題