【问题标题】:How to dynamically set value in mysql query from an object?如何从对象动态设置mysql查询中的值?
【发布时间】:2019-08-23 23:32:56
【问题描述】:

我正在尝试使用一种抽象方法来处理对特定表的任何更新。我希望它在不使用任何额外代码逻辑的情况下动态拉取和设置。

我知道有几种方法可以做到这一点,或者使用添加代码逻辑,或者只是将查询改进为更明确。

let result = await db.query(`UPDATE media SET ? WHERE product_id=?;`, [[data.variant_id], productId]);
return result;
}

我希望 set 的值是,在这种情况下,variant_id=。

除了在查询之前设置值之外,我不知道在查询本身中完成此操作的方法

【问题讨论】:

  • 我知道这可以通过在对象中设置值并使用 set 来完成?并传递对象,我只想知道是否有办法在 mysql.query 格式中动态执行此操作。
  • 我正在寻找的更多内容如下 let newValue = { [property]: value }; let result = await db.query('UPDATE media SET ? WHERE product_id=?;',[newValue, productId]);返回结果;

标签: mysql sql node.js mariadb


【解决方案1】:

你错过了列名

  let result = await db.query('UPDATE media SET your_column_name =  ? 
  WHERE product_id=?;',
        [[data.variant_id], productId]);

不要对sql字符串使用反引号,而是使用单引号..在mysql中,反引号用于复合列名和包含保留字的列名

【讨论】:

    【解决方案2】:

    对Mysql动态更新字段使用prepare语句

    set @stmt = concat ("UPDATE media SET  variant_id=",data," WHERE product_id=",productId," ;");
    prepare resultset from @stmt;
    execute resultset;
    deallocate prepare resultset;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-12
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多