我正在使用Nodejs和expressjs,现在我使用“插入查询”,但我想让查询更安全,我想使用“connection.query”(paramerized query),我怎么能做到这一点?我还想知道如何在expressjs中获得“最后插入的id”?这是我目前的代码
static async addServiceDetail(userId,serviceId,genderTypeId,price,serviceName)
{
const sql = `SELECT id from servicesdetail WHERE userId='${userId}' AND serviceId='${serviceId}' AND genderTypeId='genderTypeId'`;
const [rows, fields] = await pool.execute(sql);
if(rows<1)
{
const sql2 = `INSERT INTO servicesdetail (userId, serviceId, genderTypeId,price,serviceName) VALUES ("${userId}", "${serviceId}", "${genderTypeId}", "${price}","${serviceName}")`;
console.log('query is '+ sql);
const datass = await pool.execute(sql2);
console.log('last inserted id is ' +datass.insertId);
}
else
{
console.log('already exist');
}
}
1条答案
按热度按时间a6b3iqyw1#
假设您使用的是节点的mysql2驱动程序,可以按如下方式传递参数:
查询将如下所示:
插入内容如下所示:
对于获得最后标识符的情况,可以通过查询:
但是需要冷静的阅读文档,看看表结构是否有带auto_increment的ID,如果标识符没有auto_increment可能就不行了,另外还有观察说明文档本身告知“如果使用单个INSERT语句插入多行LAST_INSERT_ID()只返回为插入的第一行生成的值。这样做的原因是为了能够在其他服务器上轻松地重现相同的INSERT语句。"。
希望我能帮上忙;D