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

kmpatx3s  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(348)

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

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

7fyelxc5

7fyelxc51#

您只需将数据切换为使用占位符值,然后分别添加数据:

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

node和mysql需要注意的一点是,sequelize之类的工具使这变得容易得多。任何支持承诺和 async / await 几乎总是没有一系列嵌套回调那么麻烦。

px9o7tmv

px9o7tmv2#

后者不起作用,因为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) {
...
});

相关问题