我有以下内容:
$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']);
}
有什么想法吗?
感谢。
答案 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']);