2016-12-03 38 views
0

私は別のテーブルに値を挿入することができるように変数に私のmysqlクエリからの検索値を格納したいと思います。以下は mysqlの値を変数に格納する方法は?

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

私は希望値

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(); 

私はそれを慰めるとき、それは正しい番号を出力しますので、私は、私が正しく値を取得しています知っているを取得するためのクエリです格納された値が接続の最後を渡す(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(); 

データ値がプロミスまたはコールバック関数を使用して、第1のクエリまたはrows[i].maxId

+1

あなたのニーズ(グローバルスコープなど)に応じてスコープが十分に広い変数に変数を挿入するだけではいかがですか。ちょうど 'var data = rows [i] .maxId' – RLaaa

+0

私はしようとしましたが、その変数はクエリの範囲内でのみ動作するようです。 – John

+0

私はコンソールログをこのvar data = rows [i] .maxIdに置き換えますが、コンソールのログデータをクエリのスコープ外に置くと、この変数は定義されていません。 – John

答えて

2

でつかんであります。

これは必要なものですか?

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(); 
+0

ありがとうございました。私は値をデータベースからこの値を挿入する後続のクエリにクエリから取得したいです。私のコードを次のような形で更新しました – John

+0

これで今のように使用できます: '' –

+0

これで、 '.then(function(rows){})' –

関連する問題