properties_tbl :
id property_type usd_price euro_price published
----------------------------------------------------
1 private 1000.00 0 yes
2 landed 1200.00 0 yes
3 private 0 1200.00 yes
4 land 2000.00 0 yes
5 land 0 3000.00 yes
6 private 0 1200.00 yes
此表是我网站的示例表
如果usd_price存在欧元将为0然后如果欧元存在usd价格将为0,
我在我的系统中做了相同的交换价值usd和欧元价格。
我的问题在于搜索,当我像这些查询一样搜索它显示所有行
SELECT *
FROM (`properties_tbl`)
WHERE (euro >= 100 OR usd >= 110)
AND (euro <= 5000 OR usd <= 4500)
AND `published` = 'yes'
答案 0 :(得分:0)
我认为问题是由于您的SELECT查询,而不是CodeIgniter的Active Record。根据示例表中的数据,WHERE子句中的第一个条件始终为true。就构建基本查询的方式而言,devpro的评论是正确的。
要在CodeIgniter的Active Record结构中执行此操作,您可能会做一些不同但这有效:
$this->db->select('*');
$this->db->from('properties_tbl');
$this->db->where('euro BETWEEN 100 AND 5000');
$this->db->where('usd BETWEEN 110 AND 4500');
希望这有帮助。
答案 1 :(得分:0)
感谢大家,All给了我非常有用的建议。 我在@devpro和@cfnerd上创建了新的查询。
$this->db->where("(property_price BETWEEN $minprice AND $maxprice OR usd BETWEEN $usd_minprice AND $usd_maxprice)");
现在可行! 感谢所有