2012-04-25 126 views
0

我想在Codeigniter视图中显示数据库中的数据。看起来应该很简单,但它不起作用。简单的codeigniter查询+结果显示将不会显示

我得到2错误:未定义的变量($ movielist,在视图中)和PHP foreach的无效参数,也在视图中。

任何想法如何让这个工作?下面的代码。

控制器

function displayMovies() { 

$this->load->model('movie_list_model'); 

$data['movielist'] = $this->movie_list_model->getList(); 

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

型号

function getList() { 

     $query = $this->db->query('SELECT firstname, lastname, favorite_movie FROM movies'); 
     return $query->result(); 


     if ($query->num_rows() > 0) { 

     foreach ($query->result_array() as $row) 
     { 
      echo $row['firstname']; 
      echo $row['lastname']; 
      echo $row['favorite_movie']; 
     } 
    } 

查看

 <?php foreach($movielist as $mlist) 
     { 
      echo $mlist->firstname . '<br />'; 
      echo $mlist->lastname . '<br />'; 
      echo $mlist->favorite_movie; 
     } 
     ?> 

回答

1

如果(查询没有找到任何行,它将返回null,导致您的视图中出现undefined错误。无效的参数错误是因为您无法遍历null

的安全将被包括在您的看法是这样的:

if($movielist) 
{ 
    /* foreach() {} */ 
} 

而且,你的模型应该只返回的数据(不回应的话)。

function getList() { 
    $query = $this->db->query('SELECT firstname, lastname, favorite_movie FROM movies'); 
    return $query->result(); /* returns an object */ 
    // Alternatively: 
    // return $query->result_array(); /* returns an array */ 
} 

我还建议使用Active record

function getList() { 
    $this->db->select('firstname'); 
    $this->db->select('lastname'); 
    $this->db->select('favorite_movie'); 

    $query = $this->get('movies'); 
    return $query->result(); 
} 

祝你好运!

+0

谢谢你的回应。我不再得到“对于PHP foreach无效的论点” - 我添加了你建议的if语句。但我仍然收到$ movielist的“未定义变量”。任何想法为什么该变量未被识别为已定义? – chowwy 2012-04-25 22:19:54

+1

想通了。接受并提高您的答案。 – chowwy 2012-04-25 22:54:37