2010-09-16 53 views
8

我試圖得到一個數據庫查詢是一個對象轉換爲一個關聯數組,這樣我可以在笨在日曆類使用它。轉換一個MySQL結果對象到關聯陣列(笨)

這是我的模型:

<?php 

class Get_diary_model extends Model { 

    function getAllDiaries($year,$month) { 

     $data = $this->db->query("SELECT day AND entry FROM diary WHERE month=$month AND year=$year"); // the entries for the relevant month and year 

     foreach($data->result_array() as $row) { // return result as assoc array to use in calendar 
      echo $row['day']; 
      echo $row['entry']; 
     } 

     return $data; 
     } 
    } 

,這是錯誤我得到:

atal error: Cannot use object of type CI_DB_mysql_result as array in C:\wamp\www\mm\system\libraries\Calendar.php on line 219 

任何想法?

回答

6

檢查甌這個視頻教程,它會幫助你 - >http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-the-calendar-library/

您的模型應該是這樣的:

function getAllDiaries($year,$month) 
    { 
     $q = $this->db->query("SELECT day AND entry FROM diary WHERE month=$month AND year=$year"); 

     if($q->num_rows() > 0): 
      foreach($q->result() as $row): 
       $data[] = $row; 
      endforeach; 
      return $data; 
     else: 
      return false; 
     endif; 
    } 

和控制器:

function index($year = null, $month = null) 
    { 
     $this->load->model('Get_diary_model'); 

     if (!$year) { 
      $year = date('Y'); 
     } 
     if (!$month) { 
      $month = date('m'); 
     } 

     $data['calendar'] = $this->Get_diary_model->getAllDiaries($year, $month); 
} 
+0

完美!非常感謝,我的控制器與此類似,我只是無法弄清楚模型部分。將檢查出來的視頻,以及... – Robimp 2010-09-16 11:20:59

+0

歡迎你:) – Christophe 2010-09-16 11:23:00

+0

你可以投票了我的答案,以及:) – Christophe 2010-09-16 11:32:26

3

問題不在使用result_array()的時候,更多的是你以後直接返回$ data。 $ query = $ this-> db-> query()然後在foreach中使用$ query-> result_array()。然後,您可以在foreach中構建它之後返回$ data。

對方回答是寫下面的長篇大論方式:

function getAllDiaries($year,$month) 
{ 
    $sql = "SELECT day AND entry FROM diary WHERE month=$month AND year=$year"; 
    return $this->db->query($sql)->result(); 
} 

當然,這將返回對象的數組,而不是一個多維數組,但。

+0

嗨菲爾感謝您的答覆,我給了一個嘗試,但它不完全符合我的要求我試圖從數據庫中獲取'day'字段作爲數組鍵,'entry ' 價值。到目前爲止,沒有運氣。 – Robimp 2010-09-16 15:14:31

+0

var_dump()就是這裏的答案。每當你得到一個意想不到的結果,var_dump(),看看有什麼,並相應地採取行動。要得到一個assoc數組,你正在使用正確的語法。這是在你的foreach或數組操作後來出錯了。 – 2010-09-17 08:29:17

1

使用下面簡單的方法,

$query = $this->db->get_where('table', array('table_id' => $id)); 

     $queryArr = $query->result();   

     foreach ($queryArr[0] as $key=>$val) 
     { 
      $row[$key]=$val; 
     } 

print_r($row); //this will give associative array 
1

這裏是笨-3

function getAllDiaries(){ 
    $query = $this->db->query("YOUR QUERY HERE"); 
    return $query->result('array'); 
} 

OR

function getAllDiaries(){ 
    return $this->db->query("YOUR QUERY HERE")->result('array'); 
} 

注溶液:結果()函數接受「陣列「或」對象「作爲參數。默認值是「對象」