Mysql Nodejs:在插入时直接从表中获取最大id

Mysql Nodejs:在插入时直接从表中获取最大id,mysql,node.js,Mysql,Node.js,我试图在表中插入一个新值(使用node.js),同时使用select MAX from表获取要插入的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)

我试图在表中插入一个新值(使用node.js),同时使用select MAX from表获取要插入的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);
});

虽然有效,但容易受到SQL注入攻击。有人知道如何使用第一种语法实现这一点吗?

您的插入结果将给出如下结果

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

如果您的id是自动递增的,那么您将从“insertId”中获得插入id。

只需向下投票即可。很难解释为什么投票被否决。