-1

(node.js を使用して) テーブルに新しい値を挿入しようとしていますが、同時に select MAX from table を使用して挿入する ID を取得しようとしています。最初にこれを試しました:

var nova = {
    Id: 'Select MAX(Id)+1 from TABELA',
    Id_novo: dados_da_msg[1],
    Nome: dados_da_msg[2],
};
connection.query('INSERT INTO TABELA SET ?', nova, function(err, result) {
    if (err)
        console.log("ERROR23: " + err.message);
});

うまくいきませんでした。常に 0 を返し、主キーに違反していました。それから私はこれを試しました

var sql = "INSERT INTO TABELA (Id, Id_novo, Nome) Select MAX(Id)+1,'"+dados_da_msg[1]+"','"+dados_da_msg[2]+"' from TABELA;";
connection.query(sql, function(err, result) {
    if (err)
        console.log("ERROR23: " + err.message);
});

これは機能しましたが、SQLinjections 攻撃に対して脆弱です。最初の構文を使用してこれを達成する方法を知っている人はいますか?

4

1 に答える 1

2

挿入結果は次のようになります

{ fieldCount: 0,
  affectedRows: 1,
  insertId: 123,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }

ID が自動インクリメンタルの場合、「insertId」から挿入 ID を取得します。

于 2013-11-13T16:45:53.047 に答える