бросить ошибку; // Возврат ошибок, не связанных с MySQL ^

Ошибка: ER_PARSE_ERROR: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис рядом с '' a ',' b ',' c '' в строке 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();
});
0
jpj 30 Авг 2020 в 00:20

2 ответа

Лучший ответ

Думаю, вам просто нужны дополнительные квадратные скобки вокруг значений:

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) { ... });
1
GMB 29 Авг 2020 в 21:21

Вы должны добавить для каждой переменной заполнитель

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};
0
nbk 29 Авг 2020 в 23:37