correct mysql insertion in nodejs?

rickster26ter1 :

I am trying to get my nodejs to insert into my mysql database, but I'm getting a parse error. Please help if anyone can see an error:

    var con = mysql.createConnection({
  host: "XXX",
  user: "XXX",
  password: "XXX",
  database: "XXX"
});
con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql;
  if(req.body.role == "tutor")
  {
     sql = 'INSERT INTO Tutor (sesh_save) VALUES ? ';
  }
  else if(req.body.role == "student")
  {
     sql = 'INSERT INTO Students (sesh_save) VALUES ?'; 
  } 
  var yoy = 'yoy';
  con.query(sql, yoy, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });

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 ''yoy'' at line 1

Thanks again...Sorry if this is a dumb question, but mysql insertion is always the hardest thing for me to debug.

Bilal Siddiqui :

Second argument in con.query need to be an array in your case:

Add array brackets [ ] around yoy variable

con.query(sql, [yoy], function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
});

Alternatively add brackets ( ) in values if you don't want to use array brackets,

Replace your sql lines with following-

   if (req.body.role == "tutor") {
     sql = 'INSERT INTO Tutor (sesh_save) VALUES (?) ';
   }
   else if (req.body.role == "student") {
     sql = 'INSERT INTO Students (sesh_save) VALUES (?) '; 
   } 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=5659&siteId=1