我想在nodejs中将一个变量添加到mysql中

时间:2018-05-29 17:56:04

标签: mysql node.js

我像这样在数据库中插入一条记录

connection.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "INSERT INTO xtable (x_date, x_time, x_text) VALUES ('2018-05-26', '23:00:00', 'blablabla')";
 connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
    connection.end();
  });
});

上述作品可以说我做了

 var ytime = '19:00:00';
 var ydate = '2018-05-29';
 var ytext = 'blabla';

 connection.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "INSERT INTO xtable (x_date, x_time, x_text) VALUES (ydate, ytime, ytext)";
 connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
    connection.end();
  });
});

我该怎么做?这只是错误,我的节点是v8.10.0

2 个答案:

答案 0 :(得分:0)

后者没有工作,因为sql语句没有将你的ydate,ytime,ytext解释为变量,而是作为字符串的一部分。如果要将语句和数据分开,应该这样做:

var ytime = '19:00:00';
 var ydate = '2018-05-29';
 var ytext = 'blabla';
 var sql = "INSERT INTO xtable (x_date, x_time, x_text) VALUES (?,?,?)";
 connection.query(sql, [ydate,ytime, ytext], function(err,result) {
...
});

答案 1 :(得分:-1)

您只需将数据切换为使用placeholder values,然后单独添加数据:

connection.query(
  "INSERT INTO xtable (x_date, x_time, x_text) VALUES (?, ?, ?)", 
  [ ydate, ytime, ytext ],
  function (err, result) {
    // ...
  }
}

有关Node和MySQL的一点注意事项是像Sequelize这样的工具,这使得这更容易。任何支持Promises和async / await的东西几乎总是比一系列嵌套回调更少。