-1

我正在尝试在表中插入一个新值(使用 node.js),同时使用从表中选择 MAX 获取要插入的 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 回答