2009-10-16 75 views
1

我試圖使用get_where來獲取所有者等於登錄用戶的所有數據庫記錄的列表。CodeIgniter get_where

這是我的功能在我的控制器;

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $this->db->get_where('files', array('owner =' => '$owner'))->result(); 
} 

而在我看來,我有以下;

<?php foreach($query->result() as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

當我嘗試訪問視圖,我得到的致命錯誤:調用一個成員函數結果()一個非對象在/views/account/files.php第1行

想知道是否有人對此有何看法?

感謝

回答

17

笨是基於MVC原則框架。因此,您通常會將應用程序邏輯,數據抽象和「輸出」分離到各自的CodeIgniter使用區域。在這種情況下:控制器,模型和視圖。

僅供參考,您通常應將「數據」代碼作爲模型函數,在本例中爲get_where功能。我強烈建議您閱讀所提供的User Guide以掌握CodeIgniter,它應該通過大多數步驟握住你的手。請參閱:目錄(右上)。

TL; DR

解決你的問題,你需要確保你通過你的看法通過控制變量:

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $data['files'] = $this->db->get_where('files', array('owner =' => '$owner'))->result(); 

    $this->load->view('name_of_my_view', $data); 
} 

並確保使用正確的變量在觀點:

<?php foreach($files as $row): ?> 

    <span><?=$row['name']; ?></span> 

<?php endforeach; ?> 
4
<?php foreach($query->result() as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

雷姆像這樣的結果函數。

<?php foreach($query as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

Btw。在返回結果之前測試查詢的結果是一個好主意。

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $query = $this->db->get_where('files', array('owner =' => '$owner'))->result(); 

    if ($query->num_rows() > 0) 
    { 
     return $query->result(); 
    } 
    return FALSE; 
}