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

在 nodejs 和 MySQL 中,分页查询的占位符

在 Node.js 和 MySQL 中进行分页查询时,你可以使用占位符来安全地传递分页参数(如 LIMITOFFSET)到 SQL 查询中。这通常是通过使用预处理语句(prepared statements)来实现的,尽管在分页查询中,由于 LIMITOFFSET 通常是整数,并且不包含用户输入的数据,因此直接使用它们而不进行预处理也是安全的(但仍然建议使用占位符以保持代码的一致性和可维护性)。

以下是一个使用 mysql2/promise 库进行分页查询的示例,其中使用了占位符:

const mysql = require('mysql2/promise');

(async () => {
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'yourUsername',
    password: 'yourPassword',
    database: 'yourDatabase'
  });

  try {
    const pageSize = 10; // 每页显示的记录数
    const pageNumber = 2; // 要查询的页码(从1开始)
    const offset = (pageNumber - 1) * pageSize; // 计算偏移量

    // 使用占位符进行分页查询
    const [rows, fields] = await connection.execute(
      'SELECT * FROM yourTable LIMIT ?, ?',
      [offset, pageSize]
    );

    console.log(rows); // 输出查询结果
  } catch (err) {
    console.error('Error executing query:', err);
  } finally {
    await connection.end(); // 关闭数据库连接
  }
})().catch(err => {
  console.error('Failed to connect to MySQL:', err);
});

在这个例子中,LIMITOFFSET 的值是通过占位符 ? 来传递的,并且这些值被包含在一个数组中作为 execute 方法的第二个参数。这是为了确保这些值被正确地转义,尽管在这个特定的例子中,由于它们是整数,所以实际上不需要转义。然而,使用占位符可以使代码更加清晰,并且如果将来这些值变为包含用户输入的数据,那么使用占位符将确保安全性。

请注意,mysql2/promise 库提供了对 Promise 的支持,这使得异步操作更加简洁。如果你使用的是 mysql 库(非 Promise 版本),你将需要使用回调函数来处理异步操作。不过,无论使用哪个库,分页查询的基本原理和占位符的使用方式都是相同的。


http://www.kler.cn/news/336866.html

相关文章:

  • 地理定位营销与开源AI智能名片O2O商城小程序的融合与发展
  • AIGC与BI的融合:永洪开启数据智能新时代
  • 生信机器学习入门4 - 构建决策树(Decision Tree)和随机森林(Random Forest)分类器
  • 网络编程项目框架内容
  • zabbix7.0监控linux主机案例详解
  • 【MySQL】使用 JDBC 连接数据库
  • 关于启动flask应用,其他主机无法访问flask应用的错误记录
  • 如何定位前后端Bug?
  • Linux网络基础:HTTPS 网络传输协议
  • 59 mysql 存储引擎之 PERFORMANCE_SCHEMA
  • [含文档+PPT+源码等]精品大数据项目-基于python爬虫实现的大数据岗位的挖掘与分析
  • 什么是 SAP JCO
  • draw.io创建自定义形状
  • 联想服务器配置阵列、安装操作系统
  • 系统架构设计师-论文题(2021年下半年)
  • Midjourney零基础学习
  • [SpringBoot] 苍穹外卖--面试题总结--上
  • Java | Leetcode Java题解之第461题汉明距离
  • vivado 关于 UltraFast 设计方法
  • 使用前端三剑客实现一个备忘录