Mysql Nodejs:在插入时直接从表中获取最大id
我试图在表中插入一个新值(使用node.js),同时使用select MAX from表获取要插入的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)
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。只需向下投票即可。很难解释为什么投票被否决。