Codeigniter活动记录从两个不同的列值获取行

时间:2016-03-17 11:39:03

标签: php mysql codeigniter

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'  

2 个答案:

答案 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)");

现在可行! 感谢所有