【问题标题】:How to update multiple columns in mysql using nodejs如何使用nodejs更新mysql中的多个列
【发布时间】:2017-01-21 21:17:15
【问题描述】:

如何使用 node.js 更新 MySQL 中的多列:

var query = 'UPDATE employee SET profile_name = ? WHERE id = ?';
connection.query(query,[req.name,req.id] function (error, result, rows, fields) {

但我必须立即更新profile_namephone,emailcountrystateaddress
我该怎么做,任何人都可以建议。

【问题讨论】:

  • 如果你看到这个:Titus 发布了最好的答案,它应该是被接受的。
  • @ChrisG 你看到问题的日期了吗?我认为今天的答案与 OP 无关
  • @Jens 我完全清楚这个问题是在 2016 年发布的,但是它是我想要标记为当前问题的完美副本。据我所知,SO 应该是一个有用的问题和答案的存储库,更新旧的问题/答案不仅是可以接受的,而且是鼓励的。

标签: mysql node.js express


【解决方案1】:

?‍? 要使用 nodejs 更新 mysql 中的多个列,那么您可以像下面的代码一样:?

const query = 'UPDATE `employee` SET ? WHERE ?';
connection.query(query, [req.body, req.params], function(err, rows) {
  if(err) {
    console.log(err.message);
    // do some stuff here
  } else {
    console.log(rows);
    // do some stuff here
  }
});

? 确保您的 req.body 不是 empty 并且您的 req.body 中的字段与您的 employee 表中的字段相同。

如果您的req.bodyundefinednull,那么您可以将此中间件添加到您的快递服务器:

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

希望对你有帮助?。

【讨论】:

    【解决方案2】:

    如果您有多个列更新,并且需要从对象中获取值, 您可以执行以下操作 -

    let data = {
        "table": {
            "update_table":"dlrecustomer"
        },
      "result": {
        "pro":"blre",
            "pro_id":"BFCA",
            "MOBILE":"9506443333",
      },
      "keys": {
        "CUSTOMER":"27799144",
            "APPLICATION":"5454642463"
      },
    }
    
    let update_set = Object.keys(data.result).map(value=>{
           return ` ${value}  = "${data.result[value]}"`;
        });
    
        let update_query =  `UPDATE ${data.table.update_table} SET ${update_set.join(" ,")} WHERE CUST_ID = "${data.keys.CUSTOMER}" AND APPL_ID = "${data.keys.APPLICATION}"`;
    

    【讨论】:

    • 请不要使用此解决方案。这很容易受到 SQL 注入的攻击。
    【解决方案3】:

    UPDATE 语句语法:

    UPDATE <TableName>
    SET <Col1> = <Val1>,
        <Col2> = <Val2>,
        ....
    WHERE id = ?
    

    【讨论】:

      【解决方案4】:

      只需添加集合中的所有列:

      var query = 'UPDATE employee SET profile_name = ?, phone =?, .. WHERE id=?';
      
      connection.query(query,[req.name,req.phone,...,req.id] function (error, result, rows, fields) {
      

      【讨论】:

      • 没有办法做到这一点吗?类似于调用只传递列名的实用函数?
      • @GiulianaBezerra 有:可以将对象传递给SET ?。见这里:stackoverflow.com/a/59960177/5734311
      • @Downvoter:感谢您在没有解释的情况下投反对票
      猜你喜欢
      • 2015-12-02
      • 2016-08-31
      • 1970-01-01
      • 2014-10-22
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多