【问题标题】:Trying to pass variables into a prepared statement in JavaScript Node JS试图将变量传递到 JavaScript Node JS 中的准备好的语句中
【发布时间】:2022-01-11 05:41:57
【问题描述】:
function addEmployee() {
  inquirer
    .prompt([
      {
        name: "firstname",
        type: "input",
        message: "Enter their first name ",
      },
      {
        name: "lastname",
        type: "input",
        message: "Enter their last name ",
      },
      {
        name: "role",
        type: "list",
        message: "What is their role? ",
        choices: selectRole(),
      },
      {
        name: "choice",
        type: "rawlist",
        message: "Whats their managers name?",
        choices: selectManager(),
      },
    ])
    .then(function (val) {
      var roleId = selectRole().indexOf(val.role) + 1;
      var managerId = selectManager().indexOf(val.choice) + 1;
      db.query(
        "INSERT INTO employee (first_name, last_name, role_id, manager_id) values ('?', '?', ?, ?)?",
        {
          first_name: val.firstName,
          last_name: val.lastName,
          manager_id: managerId,
          role_id: roleId,
        },
        function (err) {
          if (err) throw err;
          console.table(val);
          startPrompt();
        }
      );
    });
}

无法使 INSERT into employees 查询语句工作。我正在使用 mysql2 npm 包与 Node JS 中的 Mysql 数据库交互。试图将询问者问题的答案传递到准备好的语句中以插入到员工表中。如何为准备好的语句传入变量?

【问题讨论】:

  • “不能让它工作”是什么意思?你能edit你的问题吗?
  • 作为数组传递,db.query('... VALUES (?, ?, ...)', [val.firstName, val.lastName, ...])
  • code: 'ER_PARSE_ERROR', errno: 1064, sqlState: '42000', sqlMessage: "您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册以获取正确的语法在“?”附近使用在第 1 行", sql: "INSERT INTO 员工 (first_name, last_name, role_id, manager_id) 值 ('NULL', 'NULL', 0, 0)?"
  • 试图将其作为数组传递
  • 也应该是?, 而不是'?',

标签: javascript node.js mysql2


【解决方案1】:

作为数组传递,检查占位符的顺序是否匹配数组顺序以及变量的大小写问题。

...
db.query(`
   INSERT INTO employee (
     first_name, 
     last_name, 
     role_id, 
     manager_id
   ) 
   VALUES (?, ?, ?, ?)
`, [val.firstname, val.lastname, roleId, managerId]);
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2021-05-03
    相关资源
    最近更新 更多