我有一个名为sla的表和一些名为harian(float)、bulanan(float)、progres(varchar)的列。我需要更新 progres
列到 green
, yellow
,或 red
基于上个月的价值。
这是我试过的代码
$id = $this->input->post('txtId');
$idminus1 = floatval($id) - 1;
$currentbulanan = $this->db->query("SELECT bulanan
FROM sla
WHERE id='$id'")
->row();
$previousbulanan = $this->db->query("SELECT bulanan
FROM sla
WHERE id='$idminus1'")
->row();
if ($currentbulanan > $previousbulanan) {
$progres = "green";
}
if ($currentbulanan < $previousbulanan) {
$progres = "red";
}
if ($currentbulanan = $previousbulanan) {
$progres = "yellow";
}
我想用 $progres
变量来更新 progres
列。我检查了第一个查询的结果是否大于第二个查询的结果,但是 $progres
总是 yellow
. 我做错什么了?
1条答案
按热度按时间nom7f22z1#
根据codeigniter生成查询结果文档
行()
此方法返回单个结果行。如果查询有多行,则只返回第一行。结果作为对象返回。
既然你用的是
->row()
要获取的语法$currentbulanan
以及$previousbulanan
变量如下那么两者的类型
$currentbulanan
以及$previousbulanan
变量是对象,所以这样的比较和比较两个数字的效果不一样。你需要转换
bulanan
财产$currentbulanan
以及$previousbulanan
漂浮然后像下面这样比较
另一个问题是这个语法
这永远是真的,所以
$progres
将始终设置为yellow
. 根据php比较运算符文档,检查相等性的正确语法是==
.下面是完整的修改代码