SQL查询无法获得第三个elseif值 - 为什么?

时间:2012-08-06 10:00:38

标签: php mysql

下面我的SQL查询不会输出$ srchRegion&& $ srchCategory字符串,如果两者都有$ _POST值。为什么呢?

if (($srchRegion!='00') || ($srchRegion!='') && ($srchCategory=='00') || ($srchCategory=='')) {
    return $query .= "AND region='$srchRegion'";
} elseif (($srchRegion=='00') || ($srchRegion=='') && ($srchCategory!='00') || ($srchCategory!='')) {
    return $query .= "AND category='$srchCategory'";
} elseif (($srchRegion!='00') || ($srchRegion!='') && ($srchCategory!='00') || ($srchCategory!='')) {
    return $query .= "AND region='$srchRegion' AND category='$srchCategory'";
}

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

if(($srchRegion!='00' || $srchRegion!='') && ($srchCategory=='00' || $srchCategory=='')){
return $query .= "AND region='$srchRegion'";
} elseif(($srchRegion=='00' || $srchRegion=='') && ($srchCategory!='00' || $srchCategory!='')){
return $query .= "AND category='$srchCategory'";
} elseif($srchRegion!='00' || $srchRegion!='') && ($srchCategory!='00' || $srchCategory!='')){
return $query .= "AND region='$srchRegion' AND category='$srchCategory'";
}

您尚未构建if条件权利。您使用一个AND条件检查两个OR条件,因此您需要将OR条件放在括号中。

答案 1 :(得分:1)

为什么只是继续根据填充的相应值附加where子句,而不是查找所有可能的布尔值和杂乱的if-else。

if($srchRegion != '00' && $srchRegion != '') 
  $query .= " AND region='$srchRegion'";
if($srchCategory != '00' && $srchCategory != '')
  $query .= " AND category='$srchCategory'";
return $query;   

因此$query充当查询构建器,并继续根据设置的$ _POST值添加where子句。