【问题标题】:Save result of many queries in a single array in codeigniter将多个查询的结果保存在 codeigniter 中的单个数组中
【发布时间】:2017-01-06 16:51:08
【问题描述】:

您好我有以下问题,可以将每个查询的结果保存在一个数组中(查询 1、查询 2、查询 3)。 这是我模型中的功能:

function get_query($year){

$query1 =$this->db->query("select count(*) as c from table where MONTH(date) = 1 AND YEAR(date) ='".$year."'");
$query2 =$this->db->query("select count(*) as c from table where MONTH(date) = 2 AND YEAR(date) ='".$year."'");
$query3 =$this->db->query("select count(*) as c from table where MONTH(date) = 3 AND YEAR(date) ='".$year."'")


}

我需要在驱动程序中以 json 格式接收该数组。

function query(){

        $year = $_POST['year'];
        $data = $this->mymodel->get_query($year);
        echo json_encode($data);
    }

这是我的控制器:

【问题讨论】:

  • $array[] = query::result 括号为空时,以0开头。
  • 1 个查询 select count(*), month(date) ... MONTH(date) between 1 and 3 ... group by month(date) 怎么样?您也对 SQL 注入持开放态度。你的get_query 仍然需要返回一些东西。
  • @chris85 此查询返回一个数量,例如 5,该数字 5 以及我要存储在数组中的其他查询的值
  • @KoenHollander 我不太明白答案
  • 我写的不行?

标签: php mysql codeigniter


【解决方案1】:

这不是在回答您的问题,但我相信它向您展示了该问题的解决方案,在模型中尝试

if (is_number($year))
{
   $query = $this->db->query("select sum(if(month(date)=1 and year(date) = {$year},1,0)) as month1,
         sum(if(month(date)=2 and year(date) = {$year},1,0)) as month2,
         sum(if(month(date)=3 and year(date) = {$year},1,0)) as month3
       from `table`");
       return $query->first_row();
}

这应该为您提供一个查询和一行。 请注意,is_number 提供了一些注入预防功能。

要回答您的问题,您需要创建一个包含键和值的新数组,或者创建一个标准类来保存所有数据并将其返回给控制器。我认为这个解决方案更好,因为你只做一个查询而不是三个。

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 2021-05-12
    • 2020-03-09
    • 2013-08-10
    • 2018-07-29
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多