2017-01-06 50 views
0

嗨,我有以下問題,可以將每個查詢的結果保存在數組(查詢1,查詢2,查詢3)中。 這是在我的模型功能:將許多查詢的結果保存在codeigniter中的單個數組中

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); 
    } 

這是我的控制器:

+0

'$ array [] = query :: result' 當你有空括號時,它將以'0'開頭。 –

+1

關於1查詢'select count(*),month(date)... MONTH(date)在1到3之間...按月份(日期)'分組?你也開放SQL注入。你的'get_query'仍然需要返回一些東西。 – chris85

+0

@ chris85該查詢返回的量,例如5,這個數字5連同我想在一個陣列 – max

回答

0

這不回答你的問題,但我認爲,它顯示你解決這個問題,在模型中,嘗試

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提供了一些注射預防。

要回答你的的問題,你需要做一個新的數組與鍵和值,或創建一個標準的類,它保存所有的數據並將其返回給控制器。我認爲這個解決方案更好,因爲你正在做一個查詢而不是三個。

相關問題