首页 > 解决方案 > 如何使用占位符更新 1 行中的 1 列

问题描述

我需要使用占位符更新 mysql 数据库表中 1 行中的 1 项。我尝试使用的语法是:

“更新表 SET column_name = newValue WHERE id = selectedID”

我知道表名,我想使用 id 选择要更新的行。我想使用占位符传入 column_name、newValue 和 selectedID,所以我认为语句应该如下所示:

"UPDATE table SET ?? = ? WHERE id = ?", [{column_name: newValue}, {id: selectedID}]

这是我的代码:

employeeToUpdate(columnToUpdate, newValue, employeeToUpdateId) {
    console.log("Updating employee information \n");
    // console.log('col: ' + columnToUpdate + "  newV: " + newValue + "  id: " + employeeToUpdateId);
    this.connection.query(
      // insert a new role with the given information
      // "UPDATE employee SET last_name = 'Johnson' WHERE id = 4"
      "UPDATE employee SET ?? = ? WHERE id = ?",
      [
        {
          columnToUpdate: newValue
        },
        {
          id: employeeToUpdateId
        }
      ]
    )
  }

注释掉的 console.log 确认传入的值是正确的。注释掉的“UPDATE...”语句适用于提供的值。

但这会导致解析错误。有一个更好的方法吗?我没有找到好的文档来帮助我。

标签: mysqlnode.js

解决方案


I think the second parameter should be an array.I could not test it but something like this should work.

this.connection.query("UPDATE employee SET ?? = ?? WHERE id = ?", 
    [columnToUpdate,newValue,employeeToUpdateId], 
    function (error, results) {
             if (error){
             return console.error(error.message);
             }
             console.log('Rows affected:', results.affectedRows);
    });

推荐阅读