[英]Node.js with MySQL queries
我是第一次使用MySQL,而且正在努力正确地准备语句和转义查询值。 我在这里:
connection.connect();
formatDate(function(date){
var sql = "INSERT INTO coffee_tbl (coffee_name, coffee_type, submission_date) VALUES ?";
var inserts = [req.param('name'), req.param('type'), date];
var queryString = mysql.format(sql, inserts);
console.log(queryString)
connection.query(queryString, function(err, results){
if(err) serverError(res, err);
else{
res.redirect('/view_coffee');
}
});
});
connection.end();
我正在使用felixge的“ mysql” node.js模块。
你需要一个?
每个值。 另外,请确保使用连接池。
formatDate(function(date){
var sql = [
"INSERT INTO coffee_tbl SET",
" coffee_name=?",
",coffee_type=?",
",submission_date=?"
].join('');
var inserts = [req.param('name'), req.param('type'), date];
pool.getConnection(function(err, connection) {
if(err) return console.error(err);
connection.query(sql, inserts, function(err, results) {
connection.release();
if(err) return console.error(err);
res.redirect('/view_coffee');
});
});
});
设置连接池:
var pool = mysql.createPool({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASS,
database: process.env.MYSQL_NAME,
connectionLimit: 8
});
使用环境变量作为mysql身份验证信息,以便不将身份验证信息提交到存储库。
您的sql
变量中只有一个占位符,但是您试图在inserts
变量中传递三个值。 您想要将sql
var修改为具有三个占位符,如下所示:
var sql = "INSERT INTO coffee_tbl (coffee_name, coffee_type, submission_date) VALUES (?, ?, ?)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.