提问者:小点点

查询中的WHERE子句在CodeIgniter 3中不能正常工作


我使用CodeIgniter 3的一个项目,并写在控制器下面的函数传递一些数据到视图。它查询数据库中的一个表,以获取血型作为标签,并获取每个血型的行数,其中“是可用的=1”。然后将这些数据传递到视图中以呈现图表。但是正如你所看到的,这些计数是错误的。即使"is可用=0",它也会对行进行计数。我的代码有什么问题,如何解决?

控制器中的功能。

public function bloodTypesChart()
    {

        $chartData = [];
        $blood_types = $this->db->query("SELECT (BloodType) as blood_type FROM packets WHERE (isAvailable) = '1' GROUP BY blood_type")->result_array();

        foreach($blood_types as $bt)
        {
            $record =  $this->db->query("SELECT COUNT(PacketID) as count FROM packets WHERE BloodType = '{$bt['blood_type']}'")->result_array();

            foreach($record as $row) {
                $chartData['label'][] = $bt['blood_type'];
                $chartData['data'][] = $row['count'];
            }
        }
        $chartData['chart_data'] = json_encode($chartData);
        $this->load->view('insight',$chartData);
    }

查看

<script>
    new Chart(document.getElementById("bar-chart"), {
        type: 'bar',
        data: {
            labels: <?= json_encode($label)?>,
            datasets: [
                {
                    label: "Donations",
                    backgroundColor: ["#3e95cd", "#8e5ea2","#3cba9f","#e8c3b9","#c45850"],
                    data: <?= json_encode($data)?>
                }
            ]
        },
        options: {
            legend: { display: false },
            title: {
                display: true,
                text: 'Donations'
            }
        }
    });
</script>


共1个答案

匿名用户

在查询中,由于您仅将字段名封装在括号中,WHERE(isAvailable)=“1”的计算结果为,其中有一个标记为isAvailable的字段,表中的每一行都是如此。去掉括号,它应该可以正常工作

$blood_types = $this->db->query("SELECT (BloodType) as blood_type FROM packets WHERE isAvailable = '1' GROUP BY blood_type")->result_array();