mysql order by 如何自定义列?
SELECT a, b, c, d FROM table ORDER BY a DESC;
order by 是动态的根据传入的 a,b,c,d 带进去的。
我从 orm 插入后是个字符串.....
SELECT a, b, c, d FROM table ORDER BY 'a' DESC;
啥语言 哪个 orm 库
写法取决于你用的 orm 库
入参做了严格检验的话,字段可以用 sql 注入
java mybatis 的话是 ${} 和 #{} 的区别
直接拼接上去,不要用 preparedstatement 噢,注意限制字段
字符串拼接
整个查询语句包裹一层,然后后重新使用 order by 对别名列排序
mybatis 的话 用#{}就会有这个问题
order by 后面的列,只能是拼接 SQL 拼接上去,不能用预编译后再设置参数。
golang 的 gorm,用?拼上去的。
好像看来只能用拼字符串了。会不会出现注入问题啊
从官方文档来看: dev.mysql.com/doc/refman/8.0/en/select.html
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
这里 order by 只接收 3 种形式:
- 字段名,包含 alias ; 支持用
包裹,例如a`; - expr 表达式,例如 concat(a, b)
- position,数字引用,例如 1,表示第一个 select 字段。
就目前问题描述来看,如果 SQL 是最终执行的语句,会解析为第二种。
即所有行的表达式都是常量 'a',这个 order by 等于无效。
拼一下
注意注入, 不要让外部传入这个拼的东西, 或者内部做校验
哦
想和大家讨论下一加 ace5 ,打算买 12+256 的,512 内存溢价太多了。用过的大佬,感觉日常使用怎么样,比较在意日常使用体验。我的了解如下 优点:颜值高,性能不错,屏…
包括不限于:1.提示风险,继续安装需要验证手机账号 最常见,各品牌手机都有,很多人要么忘记了账号密码,尤其是中老年人,手机可能都是子女给的,要么不敢输入账号密码,担心密码泄露,…
下面这篇文章是从StackOverflow来的。LZ面试的时候遇到了一道面试题:“如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true”,于是LZ做了下面…
合速度