
$query="select * from ent_data WHERE company LIKE '%$q%' AND state LIKE '%$state%' AND class LIKE '%$class%' and fid='$fid'";
前面用模糊查询都可以为空,但 fid 这里又必须要求准确。但这样查询条件就不能留空,怎么破?
1 toomwan 2017 年 8 月 16 日 前边加个判断 |
3 silencefent 2017 年 8 月 16 日 用三目运算符判断也不费多少事 |
4 shaweren OP @silencefent $query. = isset($fid) ? 'and fid='$fid'' : ''; 我是这么写的,但是好像不行,不知道是哪里的问题。 |
5 annielong 2017 年 8 月 16 日 加判断后,如果不为空,就$query=$query+“ and fid='$fid' ”,目前都是这样处理的 |
6 rocksolid 2017 年 8 月 16 日 难道不是 where 1=1 加上后面么 |
7 AnonymousAccout 2017 年 8 月 16 日 via iPhone ls 加一,java 党表示用原生 jdbc 手写 sql 练就了一身各种姿势拼接 sql 语句的本领 |
8 shaweren OP if($fid>0){ $query=$query."and fid='$fid'"; }else{ }; 用这种方式解决的.. |
9 ZhLTE 2017 年 8 月 16 日 where 1=1 |
10 noNOno 2017 年 8 月 16 日 select * from ent_data WHERE case when company LIKE '%$q%' AND state LIKE '%$state%' AND class LIKE '%$class%' and fid='$fid' then 1 when fid is null then 1 else 0 end =1 |
11 silencefent 2017 年 8 月 16 日 |
12 reus 2017 年 8 月 16 日 还拼接 SQL ?都什么时代了 CASE WHEN $fid <> '' THEN fid = $fid ELSE true END |
13 cxbig 2017 年 8 月 16 日 via iPad 用 ORM 组件,有值的条件才放 where 里。 |
14 jatesun 2017 年 8 月 17 日 提前校验过滤空值 |
15 WheatField 2017 年 9 月 6 日 @cxbig 我也觉得如此 |