我在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"
}
]
}
在这种情况下,这两个时间都被插入了。
我不希望出现这种情况。我要在第一个循环中执行插入查询,然后在第二次循环中更新查询。