0

MYSQL のテーブルからデータを取得して、別のテーブルに保存しようとしています。ここに私のコードがあります: 2 つのテーブルにはまったく同じ列があります。注: 行は保存されますが、すべての値は明らかにゼロです。これを保存するたびに、MYSQL はインデックスを持つ新しい行を作成しますが、すべての値はゼロです。

client.query('SELECT * FROM archive ORDER BY stamp LIMIT 1', function(err, result){
        var nor = result[0].Northatt;
        var eas = result[0].Eastatt;
        var sou = result[0].Southatt;
        var wes = result[0]. Westatt;
        var time = result[0].stamp;

        client.query("INSERT INTO quartly (Northatt, Eastatt, Southatt, Westatt, stamp) VALUES ('+nor+','+eas+','+sou+','+wes+','+time+')", function()err{
});
});

すべての変数はそれぞれの「int」を保持しています...変数を保存するために正しい構文を使用していることは間違いありません。

どんな助けでも大歓迎です!

4

2 に答える 2

0

エスケープ パラメータ クライアント側:

client.query('SELECT * FROM archive ORDER BY stamp LIMIT 1', function(err, result){
        var nor = result[0].Northatt;
        var eas = result[0].Eastatt;
        var sou = result[0].Southatt;
        var wes = result[0].Westatt;
        var time = result[0].stamp;

        client.query("INSERT INTO quartly (Northatt, Eastatt, Southatt, Westatt, stamp) VALUES (?,?,?,?,?)", [nor, eas, sou, wes, time], function()err{
        });
});

または、 node-mysql2で準備済みステートメントを使用します(この方法では、パラメーターは独立して送信され、SQL クエリ文字列の一部としてではありません)。

client.query('SELECT * FROM archive ORDER BY stamp LIMIT 1', function(err, result){
        var nor = result[0].Northatt;
        var eas = result[0].Eastatt;
        var sou = result[0].Southatt;
        var wes = result[0].Westatt;
        var time = result[0].stamp;

        client.execute("INSERT INTO quartly (Northatt, Eastatt, Southatt, Westatt, stamp) VALUES (?,?,?,?,?)", [nor, eas, sou, wes, time], function()err{
        });
});

また、これを 1 つのクエリで実行することもできます。「SQL Insert into … 値 ( SELECT … FROM … )」を参照してください

于 2013-07-30T00:40:46.220 に答える