我在我的程序中有问题。我需要将数组的所有值传递给数据库。这是我的程序。



exports.post = function(req, res){
	var obj = {};
	var eacode = req.body.eacode;
	db.all("SELECT * FROM localarea_listings WHERE eacode= ? ",eacode, function(err,rows2){
	rows2.forEach(function (row2) {
	var hcn = row2.hcn;
	var shsn = row2.shsn;
	console.log(hcn);
	console.log(shsn);
	});
	db.all("UPDATE localarea_listings SET INTERVIEW_STATUS = ? WHERE eacode = ?
        and hcn =? and shsn = ?",[req.body.INTERVIEW_STATUS, req.body.eacode,
        req.body.hcn, req.body.shsn],function(err,rows){
		if (err)
    {
    console.log("Error Updating : %s ",err );
		}
		else
    console.log("Success updating localarea_listings");
		});
	});
};





数据将根据数据库localarea_listings.db中的变量eacode进行处理

假设值hcn分别是1,2,3,4,5,而shsn分别是6,7,8,9,10。

当我打印hcn和shsn时,该值将显示我想要的内容,即
hcn = [1,2,3,4,5]和shsn = [6,7,8,9,10]

问题将在这里开始,当我更新它时,它只会更新数组的第一个值(对于hcn为1,对于shsn为6)。我尝试使用row2 [0] .hcn和row2 [0] .shsn,但是会导致错误。

希望我的问题清楚。谢谢!

最佳答案

您需要将更新移到forEach中



exports.post = function(req, res) {
  var obj = {};
  var eacode = req.body.eacode;
  db.all("SELECT * FROM localarea_listings WHERE eacode= ? ", eacode, function(err, rows2) {
      rows2.forEach(function(row2) {
        var hcn = row2.hcn;
        var shsn = row2.shsn;
        console.log(hcn);
        console.log(shsn);
        db.all("UPDATE localarea_listings SET INTERVIEW_STATUS = ? WHERE eacode = ? and hcn = ? and shsn = ? ",[req.body.INTERVIEW_STATUS, req.body.eacode, hcn, shsn], function(err, rows) {
          if (err) {
            console.log("Error Updating : %s ", err);
          } else
            console.log("Success updating localarea_listings");
        });
      });

  });
};

09-18 02:35