You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node + MySQL:如何获取带绑定参数的原始SQL查询语句

获取带绑定参数的最终SQL语句

可以实现,下面提供两种实用方案:

方案一:手动生成带参数的SQL(执行前查看)

借助mysql2内置的format方法,直接将占位符和参数拼接成最终SQL,适合提前验证语句内容:

const mysql = require('mysql2');
const id = 4;

const connection = await fastify.mysql.getConnection();
// 生成带参数的SQL
const sql = mysql.format(`SELECT age FROM users WHERE id = ?`, [id]);
console.log(sql); // 输出: SELECT age FROM users WHERE id = 4
const [rows] = await connection.query(sql);
connection.release();
return rows;

注意:你的示例用了:id命名占位符,mysql2默认支持?占位符,若要使用命名占位符,需确保连接配置开启namedPlaceholders: true,此时format方法也支持传入对象参数:

const sql = mysql.format(`SELECT age FROM users WHERE id = :id`, { id: id });

方案二:通过连接日志查看执行的SQL

在fastify-mysql的连接配置中开启日志功能,mysql2会自动输出包含参数的完整SQL语句:

fastify.register(require('@fastify/mysql'), {
  connectionString: 'mysql://user:pass@localhost/db',
  namedPlaceholders: true,
  // 开启debug日志,会输出执行的完整SQL
  debug: true
});

开启后,执行查询时控制台会打印出带实际参数的SQL语句,无需修改业务代码即可查看执行前后的语句内容。

内容的提问来源于stack exchange,提问作者Dally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:07:34