当前位置: 首页 > news >正文

【前后端】npm包mysql2的使用__nodejs mysql包升级版

不定期更新,建议关注收藏点赞。


目录

  • 简介
  • 使用说明

还在用mysql包吗?已经过时啦!

简介

mysql2 是一个用于 Node.js 的 MySQL 数据库驱动,它是 mysql 包的升级版,性能更好,支持 Promise 和 async/await,非常适合现代 Node.js 开发。
安装很简单。npm install mysql2

使用说明

const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});

connection.connect();

connection.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log(results); // 查询结果
});

connection.end();

  • Promise 方式(推荐)
    mysql2 提供 .promise() 接口,可以与 async/await 配合使用,非常方便。
const mysql = require('mysql2/promise');

async function main() {
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'your_username',
    password: 'your_password',
    database: 'your_database'
  });

  const [rows, fields] = await connection.execute('SELECT * FROM users');
  console.log(rows); // 查询结果

  await connection.end();
}

main().catch(console.error);

//使用占位符防止 SQL 注入
//自动转义参数,防止 SQL 注入。
const [rows] = await connection.execute(
  'SELECT * FROM users WHERE id = ? AND status = ?',
  [1, 'active']
);

//生产环境 连接池
const mysql = require('mysql2/promise');

const pool = mysql.createPool({
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

async function fetchUsers() {
  const [rows] = await pool.query('SELECT * FROM users');
  console.log(rows);
}
  • 用 ? 的方式防止注入是怎么实现的?
    connection.execute('SELECT * FROM users WHERE id = ?', [1]); connection.execute('SELECT * FROM users WHERE id = ? AND status = ?', [1, 'active']);MySQL2 会使用 预处理语句(prepared statements)。
    原理:
  1. 先告诉 MySQL:我要执行一个 SQL 模板(里面有 ? 占位符)
  2. 告诉 MySQL:? 的值是 1(或其他用户输入的内容)
  3. MySQL 自动对参数做转义,不管你传入什么内容(字符串、特殊符号、恶意代码),它都不会被当作 SQL 语法的一部分。

相关文章:

  • 四、TorchRec的推理优化
  • RAG(检索增强生成)系统,提示词(Prompt)表现测试(数据说话)
  • 如何在AMD MI300X 服务器上部署 DeepSeek R1模型?
  • c++关键字new
  • CExercise_07_1指针和数组_2数组元素的逆序数组逆序(指针版 reverse_by_ptr 和下标版 reverse_arr)
  • NVIDIA H100 vs A100:新一代GPU架构性能对比分析
  • 第五章:5.1 ESP32物联网应用 - MQTT协议深度教程
  • 大厂文章阅读
  • 速盾:高防CDN节点对收录有影响吗?
  • 深入解析 Microcom:嵌入式串口调试利器
  • 代码随想录算法训练营Day27 | Leetcode 56. 合并区间、738.单调递增的数字、968.监控二叉树
  • C++中的设计模式
  • Linux中的Vim与Nano编辑器命令详解
  • 第8课:多智能体系统评估与迭代
  • 【模板】缩点
  • GPU算力优化
  • 敏感词过滤算法
  • swift菜鸟教程1-5(语法,变量,类型,常量,字面量)
  • centos7.9 升级 gcc
  • 杂 题 (日常练习)
  • 苏州网站建设网络推广/域名注册流程和费用
  • 怎么做站旅游网站上泡到妞/永州网站seo
  • 如何做购物网站推广/推客平台
  • 苏州建设企业网站/快速建站哪个平台好
  • 网站与网页的区别./网络营销广告案例
  • 做橙光游戏的网站/电商热门关键词