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;
     1 
                    
                    ooh      2021-08-27 04:14:15 +08:00 
                    
                    啥语言 哪个 orm 库 
                 | 
            
     2 
                    
                    Variazioni      2021-08-27 07:33:25 +08:00 
                    
                    写法取决于你用的 orm 库 
                 | 
            
     3 
                    
                    strawberryBug      2021-08-27 07:43:14 +08:00 via Android 
                    
                    入参做了严格检验的话,字段可以用 sql 注入 
                 | 
            
     4 
                    
                    qping      2021-08-27 07:44:11 +08:00 
                    
                    java  mybatis 的话是   ${} 和 #{} 的区别 
                 | 
            
     5 
                    
                    Oktfolio      2021-08-27 08:54:23 +08:00 
                    
                    直接拼接上去,不要用 preparedstatement 噢,注意限制字段 
                 | 
            
     6 
                    
                    vindac      2021-08-27 08:54:42 +08:00 
                    
                    字符串拼接 
                 | 
            
     7 
                    
                    opengps      2021-08-27 09:00:36 +08:00 
                    
                    整个查询语句包裹一层,然后后重新使用 order by 对别名列排序 
                 | 
            
     8 
                    
                    NutChocHoney      2021-08-27 09:09:10 +08:00 
                    
                    mybatis 的话 用#{}就会有这个问题 
                 | 
            
     9 
                    
                    passerbytiny      2021-08-27 09:13:50 +08:00 via Android 
                    
                    order by 后面的列,只能是拼接 SQL 拼接上去,不能用预编译后再设置参数。 
                 | 
            
     10 
                    
                    shakaraka   OP PRO golang 的 gorm,用?拼上去的。 
                好像看来只能用拼字符串了。会不会出现注入问题啊  | 
            
     11 
                    
                    acr0ss      2021-08-27 11:19:21 +08:00 
                    
                    从官方文档来看: https://dev.mysql.com/doc/refman/8.0/en/select.html 
                [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] 这里 order by 只接收 3 种形式: 1. 字段名,包含 alias ; 支持用`包裹,例如 `a`; 2. expr 表达式,例如 concat(a, b) 3. position,数字引用,例如 1,表示第一个 select 字段。 就目前问题描述来看,如果 SQL 是最终执行的语句,会解析为第二种。 即所有行的表达式都是常量 'a',这个 order by 等于无效。  | 
            
     12 
                    
                    Jooooooooo      2021-08-27 13:11:23 +08:00 
                    
                    拼一下 
                注意注入, 不要让外部传入这个拼的东西, 或者内部做校验  |