SQL:显示的搜索字词数减少了20米,增加了20米

时间:2016-11-10 18:14:43

标签: sql mysqli

我有以下内容:

$p['int_length_min'] = 'products.length';
$p['int_length_max'] = 'products.length';

if (!empty($params['int_length_min']) && !empty($params['int_length_max'])) {
    $query .= db_quote(' AND int_length > ( ?i - 20 ) AND int_length <= ?i ', $params['int_length_min'], $params['int_length_max']);
}

不知道如何将其转换为以下内容:我希望有2个字段,而不是2个字段,当用户输入一些数字时,我想回来 - / + 20,例如,如果用户输入100 ,我想从80 - 120返回结果。我尝试在该声明中添加(?i + 20)但我从未得到任何回报,如下所示:

$p['int_length_m'] = 'products.length';

if (!empty($params['int_length_m'])) {
    $query .= db_quote(' AND int_length > ( ?i - 20 ) AND int_length <= ( ?i + 20) ', $params['int_length_m']);
}

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

要只使用一个参数来过滤某个范围,请使用yoda between

...
AND ?i BETWEEN int_length - 20 AND int_length + 20
...

或代码:

$query .= db_quote(' AND ?i BETWEEN int_length - 20 AND int_length + 20', $params['int_length_m']);