1

when the variable form_loop (with for loop) executes, it only executes the last element of its array (the 'f14' one), i tried console.log the queries and will output like this : for the first query (which is correct), "SELECT * FROM f11 where eacode='4'" "SELECT * FROM f12 where eacode='4'" "SELECT * FROM f13 where eacode='4'" "SELECT * FROM f14 where eacode='4'"

for the second query (which is wrong),
"INSERT IGNORE INTO f14 (...) VALUES(...);" "INSERT IGNORE INTO f14 (...) VALUES(...);" "INSERT IGNORE INTO f14 (...) VALUES(...);" "INSERT IGNORE INTO f14 (...) VALUES(...);"

in that, it only executes the last element of array and i want an output like this in the second query... "INSERT IGNORE INTO f11 (...) VALUES(...);" "INSERT IGNORE INTO f12 (...) VALUES(...);" "INSERT IGNORE INTO f13 (...) VALUES(...);" "INSERT IGNORE INTO f14 (...) VALUES(...);"

var col = [];
var values = [];
var sql = "";
var rn = 0;
var forms = ['f11', 'f12', 'f13', 'f14'];
var form_loop;

for (var f in forms) {
  form_loop = forms[f];
  db2.all("SELECT * FROM " + form_loop + " where eacode='" + eacode + "'", function(err, rows) {

      for (var i = 0; i < rows.length; i++) {
        for (var k in rows[i]) {
          col.push(k);
          values.push(rows[i][k]);
        }
      }
      sql = "INSERT IGNORE INTO " + form_loop + " (" + col.join(",") + ") VALUES('" + values.join("','") + "');";
      connection.query(sql, function(err, rows) {
        if (err) console.log("Error number : " + err);
        rn++;
      });
      col = [];
      values = [];
    }
  });
}
Ruan Mendes
  • 90,375
  • 31
  • 153
  • 217

0 Answers0