【问题标题】:How to update multiple rows in mysql using node js如何使用node js更新mysql中的多行
【发布时间】:2019-06-29 08:30:12
【问题描述】:

我在更新表格中的多行时遇到问题。
以下是我的数据

const update_Data = upins_data.map(
                upins_data => [{
                    upin_id: upins_data.upin_id,
                    media_type: upins_data.media_type,
                    land: upins_data.land
                }]
            );

它有多个值。
我已经厌倦了以下代码

var updateSecTab = `UPDATE tb_bid_upins SET upin_id=?,media_type=?,land=? WHERE bid_id = ?`;
            var query = db.query(updateSecTab,[update_Data,cond],function(error,result,fields){

                if (error) { /**If error while inserting into table 2 it rowback the Transaction */
                    console.log('in err 1');
                    return db.rollback(function () {
                        throw err;
                    });
                }
                db.commit(function (err, result3) {
                    if (err) {
                        console.log('in err 2');
                        return db.rollback(function () {
                            throw err;
                        });
                    }
                    /**Send success result to front end */
                    console.log('success!');
                    res.send(JSON.stringify(result));
                })
            });
            console.log(query.sql);  

当我打印查询时,它给出的结果如下

UPDATE tb_bid_upins SET upin_id=('[object Object]'), ('[object Object]'),media_type=1,land=? WHERE bid_id = ?  

【问题讨论】:

  • 你能显示update_Datacond对象吗?
  • @Molda 这是我的更新数据对象[ [ { upin_id: 1, media_type: 5, land: 'Rakhiyal Circle' } ], [ { upin_id: 3, media_type: 6, land: 'Rakhiyal Circle' } ] ] 这是条件 bid_id=1
  • 我认为您不能以这种方式进行多次更新。看到这个答案stackoverflow.com/a/29519758/3284355
  • @Molda 我已经看到了这个答案。这样对吗??
  • 我不知道。你也可以试试这个stackoverflow.com/a/34866431/3284355,这可能会更好,因为它只是单个查询。

标签: mysql node.js


【解决方案1】:

大家好,我已经尝试了以下解决方案并且它有效。

var upins_data = [ { upin_id: 1, media_type: 5, land: 'Rakhiyal Circle' } ],
[ { upin_id: 3, media_type: 6, land: 'Rakhiyal Circle' } ]
var cond = 1

我在单个数组中添加了以上两个变量,如下所示

const update_Data = upins_data.map(
      upins_data => {
        return {
          bid_id: cond,
          upin_id: upins_data.upin_id,
          media_type: upins_data.media_type,
          land: upins_data.land
        }
      }
    );

我在 update_Data 数组上使用了 foreach,并且我使用 mysql foramt 函数创建了多个 sql 查询。

var queries = '';
update_Data.forEach(function (item) {
      let sql = mysql.format("UPDATE tb_bid_upins SET upin_id=?,media_type=?,land=? WHERE bid_id = ? ;", [item.upin_id,item.media_type, item.land, item.bid_id]);
      queries += sql;
      console.log(sql);
    });

比我在sql查询中传递了上面的查询变量如下

db.query(queries,(err,result)=>{
   if(err){
      console.log('err',err);
    }else{
      console.log('result',result);
    }    
  });

以上代码在 nodejs 中适用于我。

如果有人想改进的话。 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 2014-10-22
    • 1970-01-01
    • 2018-03-13
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多