mysql 参数化查询 in 和 like
Contents
背景
为了防范 SQL 注入攻击, 在查询 mysql 的时候, 我们会选择参数化查询. 但是, 有些情况比较特别, 传入的参数需要特别处理才可以传入, 常见的就是 in 和 like 的场景.
模糊查询 like
|
|
有的 mysql 驱动库需要对 % 符号进行转义, 比如替换成 %%
in 查询
|
|
日常开发中, ids 的数量往往是不确定的, 因此要填多少个参数也不确定. 如果是纯数字的 in 查询, 可以考虑转为字符串拼接的方式, 也不会有 sql 注入的问题 (不会改变 sql 的语义).
也可以考虑下面这种做法:
先循环拼接出 sql 语句部分的 ? 占位符号:
select * from test where id in (?, ?)
然后把参数的 list 展开传入:
|
|
如果还有其他条件的参数需要占位, 可以 append 到 ids 中, 依次展开:
|
|
Author hopehook
LastMod 2018-09-25