读书人

ibatis # $ 之间的差别

发布时间: 2013-11-08 17:51:58 作者: rapoo

ibatis # $ 之间的差异

这是这段时间工作遇到的一个问题,在写模糊查询的时候我用的是 like '%$param$%',引起的问题是如果是param中含有特殊字符会早晨sql语法错误,如果改为like '%' || #param# || '%' ,这样则可以避免错误,原因是 #param# 这样翻译到jdbc时是 preparedstatement 去执行,而$param$ 则是statement ,里面的特殊符号没有进过转义,所以建议如果是在程序中自己写好的变量可以为$param$,从页面接受的参数一律为#param#

1 楼 坏孩子 2011-05-15 $param$是动态sql,#param#是绑定变量 2 楼 sebatinsky 2011-05-17 。。。学习了,没有遇到过。 3 楼 maziheng 2011-05-17 $容易造成SQL注入,而且不对特殊字符进行转移,用#比较安全。 4 楼 kaobian 2011-05-17 请问 防止sql 注入的 方法是什么?难道不是 讲sql中的 特殊字符 给转移掉吗? 例如 你写的是 select * from tablename where name = 'xx'xx' ,这个分号不是特殊字符吗 是不是要 用\来转义? 5 楼 maziheng 2011-05-24 kaobian 写道请问 防止sql 注入的 方法是什么?难道不是 讲sql中的 特殊字符 给转移掉吗? 例如 你写的是 select * from tablename where name = 'xx'xx' ,这个分号不是特殊字符吗 是不是要 用\来转义?
select * from tablename where name='$param$';
如果你根据某一个字段值查询数据,当param为“' or '1'='1”会是什么情况

读书人网 >编程

热点推荐