内容简介:背景:为了防范 SQL 注入攻击, 在查询 mysql 的时候, 我们会选择参数化查询. 但是, 有些情况比较特别, 传入的参数需要特别处理才可以传入, 常见的就是 in 和 like 的场景.1 模糊查询 like
背景:
为了防范 SQL 注入攻击, 在查询 mysql 的时候, 我们会选择参数化查询. 但是, 有些情况比较特别, 传入的参数需要特别处理才可以传入, 常见的就是 in 和 like 的场景.
1 模糊查询 like
login = "%" + login + "%" db.query(`select * from test where login like ? or id like ?`, login, login)
有的 mysql 驱动库需要对 % 符号进行转义, 比如替换成 %%
2 in 查询
ids = [1, 2, 3] db.query(`select * from test where id in (?, ?)`, ids[0], ids[1], ids[2])
日常开发中, ids 的数量往往是不确定的, 因此要填多少个参数也不确定. 如果是纯数字的 in 查询, 可以考虑转为字符串拼接的方式, 也不会有 sql 注入的问题 (不会改变 sql 的语义).
也可以考虑下面这种做法:
先循环拼接出 sql 语句部分的 ? 占位符号: select * from test where id in (?, ?)
然后把参数的 list 展开传入:
db.query(`select * from test where id in (?, ?)`, ids…)
如果还有其他条件的参数需要占位, 可以 append 到 ids 中, 依次展开:
ids = append(ids, login) db.query(`select * from test where id in (?, ?) and login = ?`, ids…)
以上所述就是小编给大家介绍的《Mysql 参数化查询 in 和 like》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Java内部DNS查询实现和参数设置
- c# – 带参数的ASP.NET ODBC查询
- REST API设计优秀实践之参数与查询的使用
- MySQL体系结构与参数文件及查询优化器详解
- ThinkPHP 5.1.25 发布,改进查询参数绑定和浮点型支持
- ThinkPHP 5.1.25 发布,改进查询参数绑定和浮点型支持
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pro JavaScript Techniques
John Resig / Apress / 2006-12-13 / USD 44.99
Pro JavaScript Techniques is the ultimate JavaScript book for the modern web developer. It provides everything you need to know about modern JavaScript, and shows what JavaScript can do for your web s......一起来看看 《Pro JavaScript Techniques》 这本书的介绍吧!