2016-07-04 42 views
0
db.query("INSERT INTO `chat_entries`(`author`, `authorRank`, `receiver`, `timestamp`, `message`) VALUES (" + db.escape(GetUsername(connection)) + ", " + GetUserData(GetUsername(connection), "rank") + ", '-', " + Math.round(new Date().getTime()/1000) + ", '" + db.escape(messageData.message) + "')", function(result, rows){ 
    console.log(result.insertId); 
}); 

控制台告诉我:node.js&mysql - 如何获取最后插入的ID?

我寻找一个解决方案后无法读取空

的特性 'insertId' 我找到了这个网页: https://github.com/mysqljs/mysql#getting-the-id-of-an-inserted-row

根据这个文件,它必须工作。 我的错误在哪里? 在此先感谢。

+0

你有自动增量列吗? – fedorqui

+0

你应该有一个错误优先回调 – Adam

回答

0

你的回调参数是错误的。试试这个:

db.query("INSERT INTO `chat_entries`(`author`, `authorRank`, `receiver`, `timestamp`, `message`) VALUES (" + db.escape(GetUsername(connection)) + ", " + GetUserData(GetUsername(connection), "rank") + ", '-', " + Math.round(new Date().getTime()/1000) + ", '" + db.escape(messageData.message) + "')", function (err, result) { 
    console.log(result.insertId); 
}); 
+0

有了这个参数,我得到了同样的信息。 – Reese

+0

如果你只记录'result'对象,你会得到什么? – Adam

0

根据文档,回调的第一个参数是错误,第二个是结果。

您可能还想为这些动态值使用占位符,而不是连接它们。

此外,使用db.escape()时不要硬编码单引号。

db.query("INSERT INTO table (`field1`, `field2`) 
      VALUES ('Hello', " + db.escape("There") + ")", 
     function(error, result) { }); 
+0

小心分享链接到文档? –

1

你需要

console.log(rows.insertId); 

更换

console.log(result.insertId); 

,因为它是你传递给回调函数的varibale。