MYSQL Node.js 解析错误并抛出err错误

MYSQL Node.js parse error and throw err error

throw err; // Rethrow non-MySQL errors ^

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a', 'b', 'c'' at line 1

(我在表单中输入了a作为名称,b作为用户名,c作为密码)

我想不通问题出在哪里。

db.js:

function createUser(name, username, password){
    var sql = "INSERT INTO users (name,username,password) VALUES ?";
    var values = [name, username, password];
    con.query(sql, [values], function (err, result) {
      if (err) throw err;
      console.log('inserted');
    });
  }

  module.exports = {createUser};

server.js的相关部分:

app.post('/create', function(req,res) {
  db.createUser(req.body.name,req.body.username,req.body.password);
  res.status(200).send();
});

我认为您只需要在值周围加上额外的方括号:

var sql = "INSERT INTO users (name,username,password) VALUES ?";
var values = [[name, username, password]];
con.query(sql, [values], function (err, result) { ... });

此机制主要用于插入多行。您还可以分隔参数:

var sql = "INSERT INTO users (name,username,password) VALUES (?, ?, ?)";
var values = [name, username, password];
con.query(sql, values, function (err, result) { ... });

您必须为每个变量添加一个占位符

function createUser(name, username, password){
    var sql = "INSERT INTO users (name,username,password) VALUES (?,?,?);";
    var values = [name, username, password];
    con.query(sql, values, function (err, result) {
      if (err) throw err;
      console.log('inserted');
    });
  }

  module.exports = {createUser};