mysql - 从刚插入的行中检索数据(MySql 和 Node.js)

标签 mysql node.js node-mysql

如果我有如下查询:

var queryString = "INSERT INTO pid SET title = '" + randomTitle + "', poc = '" + random + "';"
connection.query(queryString, function(err, rows, fields) {

...(do something here)
});

,有没有一种方法可以在不执行新查询的情况下检索刚刚插入的行的信息(在我的特定情况下,我想要自动生成的主键值)。

例如,我是否可以将构造与“查询”对象(如下)一起使用,然后也许使用其中一个 query.on 回调来检索有关刚刚插入的行的信息?:

var query = connection.query(queryString, function(err, rows, fields) {

    query.on('fields', function(fields) {
    ... get the field information?
    });

    query.on('result', function(row) {
    .. get the field information?
    });


});

如果不是通过查询回调,还有其他方法吗?感谢您的回复!

最佳答案

根据 docs这是可能的。请注意,插入查询的回调函数没有rowsfields,只有result参数:

connection.query(queryString, function(err, result) {
    if (err) {
        // handle error
    }
    console.log(result.insertId); // prints inserted id
}

您的查询也容易受到 sql 注入(inject)攻击。它应该看起来像这样:

var queryString = "INSERT INTO pid SET title = ?, poc = ?";
connection.query(queryString, [randomTitle, random], function(err, result) {
    // ...
}

关于mysql - 从刚插入的行中检索数据(MySql 和 Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665221/

相关文章:

javascript - 在 Node.js 中使用 express 的 Passport Local 策略 session

javascript - 将node-mysql结果行合并为node.js的单个JSON返回

php - WHERE 语句 SQL 不起作用

mysql - 使用左连接删除 MYSQL 中的孤儿

MySQL 瓶颈

javascript - 如何在每个随机生成的字符串 Javascript 中添加公共(public)字符串

php - 拖拽插入到MySQL中

node.js - NodeJS中的 'requiring'模块时const vs var之间是否存在效率差异

php - 使用 node-mysql 返回一个列(如 PDO 中的 fetchColumn)

mysql - 使用 node-mysql 和 ExpressJS 在一个请求中执行两个或多个查询