【问题标题】:How to store a mysql value into a variable?如何将mysql值存储到变量中?
【发布时间】:2022-02-05 23:31:17
【问题描述】:

我想将 mysql 查询中的检索值存储到一个变量中,以便我可以将该值插入另一个表中。

下面是检索值的查询

connectionSelectPackageId.connect();

  let sqlSelectPackageId = "SELECT MAX(packageId) as maxId FROM recipients";

    connectionSelectPackageId.query(sqlSelectPackageId, function(err, rows){
  if(err) {
    throw err;
  } else {

      for(var i=0; i< rows.length; i++) {

          console.log(rows[i].maxId);
  };
  };
});


    connectionSelectPackageId.end();

我知道我正在正确检索该值,因为当我将其输出时,它会打印出正确的数字

      console.log(rows[i].maxId);

我希望存储的值能够通过连接结束 (connectionSelectPackageId.end();)

提前致谢

connectionInsert.connect();

 // Insert into the recipients the hashtag and information needed to opon the lock

function getDateTime() {
    var now     = new Date(); 
    var year    = now.getFullYear();
    var month   = now.getMonth()+1; 
    var day     = now.getDate();
    var hour    = now.getHours();
    var minute  = now.getMinutes();
    var second  = now.getSeconds(); 
    if(month.toString().length == 1) {
        var month = '0'+month;
    }
    if(day.toString().length == 1) {
        var day = '0'+day;
    }   
    if(hour.toString().length == 1) {
        var hour = '0'+hour;
    }
    if(minute.toString().length == 1) {
        var minute = '0'+minute;
    }
    if(second.toString().length == 1) {
        var second = '0'+second;
    }   
    var dateTime = year+'/'+month+'/'+day+' '+hour+':'+minute+':'+second;   
     return dateTime;
}

var dateTime = getDateTime();

  // Add email later on
  let sqlInsert = 'INSERT INTO recipients (date, ..., ..., ..., ..., ..., ..., data) VALUES (?, ?, ?, ?, ?, ?, ?, ?)';

   connectionInsert.query(sqlInsert, [dateTime, ..., ..., ...,...,..., ..., data], function(err, rows, fields) {
  });

connectionInsert.end();

数据是在第一个查询中抓取的值或rows[i].maxId

【问题讨论】:

  • 为什么不把它放在一个他的范围足够广泛以满足您的需求的变量中(即全局范围)?!只是 'var data=rows[i].maxId'
  • 我试过了,但似乎该变量只在查询范围内有效。
  • 我用这个 var data=rows[i].maxId 替换控制台日志,但是当我在查询范围之外执行控制台日志数据时,它说这个变量是未定义的

标签: javascript mysql node.js


【解决方案1】:

使用 Promise 或回调函数。

这是你想要的吗?

connectionSelectPackageId.connect();

var getSomeValues = function getSomeValues() {
    return new Promise(function (resolve, reject) {
        let sqlSelectPackageId = "SELECT MAX(packageId) as maxId FROM recipients";
        connectionSelectPackageId.query(sqlSelectPackageId, function (err, rows) {
            if (err) {
                return reject(err);
            } else {
                return resolve(rows);
            };
        });
    });
}

getSomeValues().then(function(rows) {
    // do something with rows here

}).catch(function (err) {
    console.log(err);
});

connectionSelectPackageId.end();

【讨论】:

  • 感谢您的光临。我想将从查询中获取的值用于后续查询,在该查询中我会将该值插入到数据库中。我已经用后续查询的样子更新了我的代码
  • 所以现在你可以把它当作:``
  • 所以现在你可以在.then(function (rows) { })中使用第二个查询
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2012-12-20
  • 1970-01-01
相关资源
最近更新 更多