在循环内执行mysql查询

时间:2019-07-16 15:59:22

标签: node.js

我在mysql中有表emp_details。我试图基于for循环内的选择查询执行更新/插入。 如果选择返回值->我将更新 如果没有,则插入一个值。这是我的示例工作代码。当请求具有重复的名称,电子邮件ID,密码时,我发现了一个问题。

var config = require('./mysql_db');
var connection= config.connection;
exports.insert_data = function(req,res){
var json = JSON.stringify(req.body);
var json_par = JSON.parse(json);
for( let i = 0; i < json_par.data.length; i++ )
{
    sql = "SELECT * FROM emp_details where email_id = ?";
    connection.query(sql,[json_par.data[ i ].email_id],function(error,results,filelds){
    if(error) throw err;
    if(results.length >0)
    {
      sql = 'UPDATE emp_details SET password = ?, name = ? where email_id = ?';
      connection.query(sql, [ json_par.data[ i ].password,  json_par.data[ i ].name,  json_par.data[ i ].email_id ],function(error,results1,filelds){
      if(error) throw err;
      });
    }
    else
    {
        console.log("insert called");
        sql = 'INSERT INTO emp_details VALUES ( ?,?,? )';
        connection.query(sql,[ json_par.data[ i ].name,  json_par.data[ i ].email_id, json_par.data[ i ].password ],function(error,results1,filelds){
        if(error) throw err;
        });
    }
});
}
res.end("success");
}


For eg:
{
    "data" : [
        {
            "name" : "scott",
            "email_id": "scott95",
            "password": "scott@123"
        },
        {
            "name" : "scott",
            "email_id": "scott95",
            "password": "scott@123"
        }
    ]
}

在这种情况下,这两个时间都被插入了。

我不希望出现这种情况。我要在第一个循环中执行插入查询,然后在第二次循环中更新查询。

0 个答案:

没有答案