【问题标题】:Node-mysql insert query with two values?Node-mysql插入查询有两个值?
【发布时间】:2016-10-31 21:19:36
【问题描述】:

这是我当前的 javascript。

var connection = mysql.createConnection({
   host: 'localhost',
   user: 'root',
   password: 'root',
   database: 'codify',
   port:     '8889'     
})


connection.connect();
 //var querydata = +"'"+data.RegUsername + "','"+data.RegPassword+"'" 
  connection.query("INSERT INTO Codify (UsernameDB , PasswordDB) VALUES ?", data.RegUsername,+","+ data.Regpassword , function(err,rows,fields){
   if (err) throw err;
    })
  });*/

此查询导致错误,我做错了什么?

【问题讨论】:

    标签: javascript mysql insert node-mysql


    【解决方案1】:

    您做错了什么是您试图将两个值连接成一个字符串,并将该字符串替换为您的单个?。如果您使用单个?,则需要传入一个对象,该对象的参数与数据库字段名称相同。

    我会这样做:

    let payload = {
        UsernameDB: data.RegUsername,
        PasswordDB: data.Regpassword
    };
    
    connection.query("INSERT INTO Codify SET ?", payload, function(err, rows) {
    
    });
    

    您也可以使用数组而不是对象来执行此操作:

    let sql = "INSERT INTO Codify (UsernameDB, PasswordDB) VALUES (?, ?)";
    connection.query(sql, [ data.RegUsername, data.Regpassword ], function(err, rows) {
    
    });
    

    或者像这样:

    let sql = "INSERT INTO Codify SET UsernameDB = ?, PasswordDB = ?";
    connection.query(sql, [ data.RegUsername, data.Regpassword ],  function(err, rows) {
    
    });
    

    但我发现使用单个 ? 和一个对象更具可读性。

    【讨论】:

      【解决方案2】:

      占位符(? 字符)将转义您的查询数据以避免 sql 注入。因为您不使用组合字符串进行查询。对每个插入的值使用占位符。喜欢

      ("INSERT INTO Codify (UsernameDB , PasswordDB) VALUES (?,?)", [data.RegUsername,data.Regpassword] , function () )
      

      查看nodejs mysql驱动文档here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 2012-01-09
        • 2014-06-21
        • 2017-07-25
        • 1970-01-01
        相关资源
        最近更新 更多