MySql中escape适用场景及其作用
前提:mysql中通配符' _ '与' % '分别代表任意一个字符和任意多个字符
作用:查询包含字符' _ '或' % '的字段时,通过escape后面字符转义' _ '或' % '不作为通配符使用
示例:
转义前: select * from user where user_name like '_hello'; # 第一个字符作为通配符匹配以任意一个字符开头 转义后: select * from user where user_name like '/_hello' escape '/'; # 声明/之后的字符不做为通配符使用
转自:https://www.cnblogs.com/leizia/p/14327958.html
以下实际处理 取用户账号密码 转义的demo
db>mysql.js 看红色标记
const mysql = require('mysql') const { MYSQL_CONF } = require('../conf/db') // 创建链接对象 const con = mysql.createConnection(MYSQL_CONF) // 开始链接 con.connect() console.log("node 链接mysql成功。。。。。") // 统一执行 sql 的函数 function exec(sql) { // const promise = new Promise((resolve, reject) => { // con.query(sql, (err, result) => { // if (err) { // reject(err) // return // } // resolve(result) // }) // }) // return promise return new Promise((resolve, reject)=>{ con.query(sql, (err, result) => { if (err) { reject(err) return } resolve(result) }) }) } module.exports = { exec, escape: mysql.escape }
controller>user.js
const { exec, escape } = require('../db/mysql') const { genPassword } = require('../utils/cryp') const login = (username, password) => { username = escape(username) // 生成加密密码 password = genPassword(password) password = escape(password) const sql = ` select username, realname from users where username=${username} and password=${password} ` // console.log('sql is', sql) return exec(sql).then(rows => { return rows[0] || {} }) } module.exports = { login }
浙公网安备 33010602011771号