0

你好我有我的网站的搜索引擎。我有两个选择字段。我想举个例子:

输入_a:3 输入_b:5

所以查询应该如下所示:

if ( ($input_a == true) && ($input_b == false) ){
        $filter_orders[] = " `col` LIKE '%$input_a%' ";
    } 
    if ( ($input_a == false) && ($input_b == true) ){
        $filter_orders[] = " `col` LIKE '%$input_b%' ";
    } 
    if ( ($input_a == true) && ($input_b == true) ){
        $filter_orders[] = " `col`= `col`>='%$input_a%' AND `col` = `col`<='%$input_b%' ";

现在的问题是,我不知道最后一个查询是否不正确。这背后的逻辑是,在我的例子中,应该找到 3 到 5 之间的范围。

所以 1,2 [3,4,5]6,7,8...

如果有人可以帮助我,我真的很感激。

多谢。

4

2 回答 2

2

那应该是

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' ";

编辑:您可能希望整个语句如下所示:

if ( (!empty($input_a) && is_int($input_a)) && (empty($input_b) || !is_int($input_b)) {
    $filter_orders[] = " `col`='%$input_a%' ";
} 
else if ( (empty($input_b) || !is_int($input_a)) && (!empty($input_b) && is_int($input_b)) ) {
    $filter_orders[] = " `col`='%$input_b%' ";
} 
else if ( !empty($input_a) && !empty($input_b) && is_int($input_a) && is_int($input_b) ) {
    $filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' ";
}

插入else if而不是仅仅if有助于确保if如果发现较早if的脚趾为真,则不会执行其他 s。

使用 the=而不是LIKEwille 确保3 == 3而不是3 and 31 or 32

于 2012-05-03T12:12:25.410 回答
1

不,可悲的是,这一切都不是正确的。它应该是这样的。

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' ";
于 2012-05-03T12:12:43.037 回答