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

Php Codeigniter活动记录从两个不同的列值获取行,php,mysql,codeigniter,Php,Mysql,Codeigniter,属性\u 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

属性\u 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
这个表格是我网站的样本表格

如果美元价格存在,欧元将为0,如果欧元存在,美元价格将为0

我在我的系统中做了相同的美元和欧元汇率

我的问题是在搜索时,当我像这样搜索时,它会显示所有行

SELECT * 
FROM (`properties_tbl`) 
WHERE (euro >= 100 OR usd >= 110) 
  AND (euro <= 5000 OR usd <= 4500) 
  AND `published` = 'yes'  
选择*
FROM(`properties\u tbl`)
其中(欧元>=100或美元>=110)

(euro我认为问题是由于您的SELECT查询,而不是CodeIgniter的活动记录。WHERE子句中的第一个条件始终为true,基于示例表中的数据。devpro的评论是正确的,就您应该如何构造基本查询而言

要在CodeIgniter的活动记录结构中实现这一点,您可能需要做一些不同的工作,但这是可行的:

$this->db->select('*');
$this->db->from('properties_tbl');
$this->db->where('euro BETWEEN 100 AND 5000');
$this->db->where('usd BETWEEN 110 AND 4500');

希望这能有所帮助。

我认为问题是由于您的SELECT查询,而不是CodeIgniter的活动记录。WHERE子句中的第一个条件始终为true,基于示例表中的数据。devpro的评论是正确的,就您应该如何构造基本查询而言

要在CodeIgniter的活动记录结构中实现这一点,您可能需要做一些不同的工作,但这是可行的:

$this->db->select('*');
$this->db->from('properties_tbl');
$this->db->where('euro BETWEEN 100 AND 5000');
$this->db->where('usd BETWEEN 110 AND 4500');

希望这有帮助。

谢谢大家,大家都给了我非常有用的建议。 我在@devpro和@cfnerd上创建了新的查询库

$this->db->where("(property_price BETWEEN $minprice AND $maxprice OR usd BETWEEN $usd_minprice AND $usd_maxprice)");
现在它工作了!
谢谢大家

谢谢大家,大家给了我非常有用的建议。 我在@devpro和@cfnerd上创建了新的查询库

$this->db->where("(property_price BETWEEN $minprice AND $maxprice OR usd BETWEEN $usd_minprice AND $usd_maxprice)");
现在它工作了!
多亏了all

您正在努力实现的目标?据我所知,您的查询将返回示例表中的所有行。请尝试此查询:
SELECT*from(
properties\u tbl
),其中(欧元介于100和5000之间)和(美元介于110和4500之间)和
published`='yes'`谢谢,我将尝试@devprosure try并分享结果。您的查询将正确的结果显示为您提供的数据。您的每美元或欧元大于100,小于5000。您试图实现什么?据我所知,您的查询将返回示例表中的所有行。尝试此查询:
S从(
properties\u tbl
)中选择*其中(欧元介于100和5000之间)和(美元介于110和4500之间)并发布“='yes'`谢谢,我将在devprosure尝试并共享结果。您的查询将正确的结果显示为您提供的数据。您的每美元或欧元大于100,小于5000。