繁体   English   中英

使用MySQL查询的Node.js

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM