你好,我的网站有搜索引擎。我有两个选择字段。我想举个例子:
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 ...
如果有人可以帮助我,我真的很感激。
非常感谢。
答案 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%' ";