Php Codeigniter活动记录从两个不同的列值获取行
属性\u tbl: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
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。