如何按范围形成选择查询

时间:2012-05-03 12:10:13

标签: php mysql variables range

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

input_a:3 input_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 ...

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

非常感谢。

2 个答案:

答案 0 :(得分: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未执行。

使用=代替LIKE wille确保3 == 3而非3 and 31 or 32

答案 1 :(得分:1)

不,遗憾的是,这一切都是正确的。它应该是这样的。

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