Node.js + Mysql 防止sql注入的写法

关键代码

javascript 复制代码
    const queryString = 'SELECT * FROM sys_user LIMIT ?, ?';
    let data =  await query(queryString, [startIndex,pageSize]); 

访问数据库相关代码

javascript 复制代码
const mysql = require('mysql')

const pool = mysql.createPool({
    host: '127.0.0.1',
    user: 'root',
    password: '123456',
    database: 'lzwj_data',
    port: 3306
})


function camelCaseKeys(obj) {
    const result = {};
    for (let key in obj) {
        let newKey = key[0].toLowerCase() + key.slice(1).replace(/_([a-z])/g, function($0,$1){return $1.toUpperCase();});
        result[newKey] = obj[key];
    }
    return result;
}


let query = function( sql, values ) {
  // 返回一个 Promise
  return new Promise(( resolve, reject ) => {
    pool.getConnection(function(err, connection) {
      if (err) {
        reject( err )
      } else {
        connection.query(sql, values, ( err, rows) => {
          if ( err ) {
            reject( err )
          } else {
            rows = rows.map(item => camelCaseKeys(item));
            resolve( rows )
          }
          // 结束会话
          connection.release()
        })
      }
    })
  })
}


module.exports =  query

一个分页查询人员信息的完整代码,查询语句实现了防止sql注入

javascript 复制代码
router.get('/api/user/page', async (req, res) => {

    let pageNo = req.query.pageNo;
    let pageSize = sysUtils.strToInt(req.query.pageSize);
    const startIndex = sysUtils.strToInt((pageNo - 1) * pageSize);
    const queryString = 'SELECT * FROM sys_user LIMIT ?, ?';
    let data =  await query(queryString, [startIndex,pageSize]); 
    const countSql = 'select count(*) count from sys_user'
    let countData =  await query(countSql); 
    let count = sysUtils.strToInt(countData[0].count);

    let pageData = {
        total : count,   
        pages : sysUtils.pageCount(count,pageSize),
        records : data
    }

    res.send({
        status: 200,
        success : true,
        message: '',
        data: pageData,
    })
})
相关推荐
shark22222221 小时前
MySQL 与 Redis 的数据一致性问题
数据库·redis·mysql
tumeng07112 小时前
Node.JS 版本管理工具 Fnm 安装及配置(Windows)
windows·node.js
imuliuliang2 小时前
Java MySQL 连接
java·mysql·adb
羊小蜜.2 小时前
Mysql 06: 表与字段别名全解——让 SQL 更简洁、可读性拉满
数据库·sql·mysql
xrkhy2 小时前
MacOS M3 安装nvm以及node.js
macos·node.js
WangJunXiang62 小时前
MySQL 高可用
数据库·mysql
炸炸鱼.3 小时前
MySQL 故障排查与生产环境优化(精简实用版)
数据库·mysql·adb
攒了一袋星辰3 小时前
SequenceGenerator废弃序列号异步补偿机制技术实现方案
java·开发语言·数据库·mysql
熬夜的咕噜猫3 小时前
MySQL 故障排查与优化
大数据·运维·服务器·mysql
刘晨鑫13 小时前
MySQL故障排查与生产环境优化
数据库·mysql·adb