我像这样在数据库中插入一条记录
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
答案 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
的东西几乎总是比一系列嵌套回调更少。