0

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

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'";
}

有没有更好的方法来做到这一点?

4

2 回答 2

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 条件放在括号中。

于 2012-08-06T10:06:08.843 回答
1

与其寻找所有可能的布尔值和混乱的 if-else,不如继续根据填充的相应值附加 where 子句。

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

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

于 2012-08-06T10:12:38.733 回答