如果我有如下查询:
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? }); });
如果不通过查询回调,还有其他方法吗?感谢您的任何回复!
根据文档,它是possilbe。请注意,插入查询的回调函数没有rows
和fields
只有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) { // ... }