【发布时间】:2018-09-11 11:29:14
【问题描述】:
我有一个名为 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。我做错了什么?
【问题讨论】:
-
尝试将
if ($currentbulanan > $previousbulanan)改为if ($currentbulanan->bulanan > $previousbulanan->bulanan)。 -
@ekad 谢谢.. 我通过添加 ->bulanan 进行了更改,但颜色仍然是 yellow 即使值大于第一个列..并且仍然对如何在 JS 中调试代码感到好奇.. 将 var_dump 放在模型中什么都没有显示..
-
我建议使用
log_messages函数进行调试。有关示例,请参阅this question。您需要先设置log_path和log_threshold。像这样使用它:log_message('debug', 'The value of $currentbulanan is: '. print_r($currentbulanan));,然后打开你的日志文件并检查结果。 -
@ekad 非常感谢您的所有回复,我将学习该方法并检查您建议的链接,但在这里我使用非 JS 得到 Var_dump 结果(将我的代码复制到 JS 之外),我现在可以看到 $currentbulanan 的值: object(stdClass)#21 (1) { ["bulanan"]=> string(1) "0" }
-
好的,现在我们知道
$currentbulanan是一个具有bulanan属性的对象。你可以试试var_dump($currentbulanan->bulanan)吗?如果它是一个字符串,那么您需要将其转换为浮点数并对$previousbulanan变量执行相同的操作。之后,您可以使用>比较它们。
标签: php mysql codeigniter if-statement