0

こんにちは私は私のサイトの検索エンジンを持っています。2つの選択フィールドがあります。例を挙げたいと思います:

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の間の範囲を見つける必要があるということです。

だから[3,4,5]1,26,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代わりに挿入すると、以前のつま先が真であることが判明した場合にififのsarentが実行されるようになります。if

=意志の代わりに使用することはLIKEそれを確認し3 == 33 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 に答える