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