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

时间:2016-01-07 21:10:19

标签: 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?
    });


});

如果没有通过查询回调,还有另一种方法吗?谢谢你的回复!

1 个答案:

答案 0 :(得分:4)

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

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

您的查询也容易受到sql注入攻击。它应该是这样的:

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