首页 > 其他分享 >#和&

#和&

时间:2024-08-27 20:04:57浏览次数:9  
标签: 语句 like 传入 编译 参数 sql

#{ }:预编译

  • 可以避免sql注入。

    • sql注入原理:在输入的参数中插入恶意代码,sql在编译时会直接将恶意代码和语句拼接到一起。

    • 避免的原因:预编译会在编译时使用?占位,固定sql语句的结构,然后用传入参数替换掉?,此时会在传入的参数值两端加引号' ',这样传入的参数就视为字符串。

${ }:占位符,直接将传入的参数和语句拼接在一起

  • 有sql注入问题

    • 解决1:将 WHERE `some_field` = '${变量}' 替换为 WHERE `some_field` = #{param}

    • 解决2:将like '%${变量}%' 替换为 like concat('%', #{变量}, '%')

  • 使用

    • order by 只能用这个,ORDER BY ${id}

    • like语句也需要用这个,select * from dm_dataset where name like '${name}%'

标签:,语句,like,传入,编译,参数,sql
From: https://www.cnblogs.com/zhegemaw/p/18383399

相关文章