foreach()返回一个空值

时间:2014-02-18 08:11:06

标签: php codeigniter foreach

我还有另一个错误,当我尝试在视图中显示结果时,结果为NULL,我无法在模型中看到查询结果。

这是我的代码清单:

控制器上的

(home.php):

$data['hasil5'] = $this->home_model->popular_list();

在模型(home_model.php)函数popular_list():

function popular_list($limit=2)
{   
    $this->db->select('news.*');
    $this->db->where('id',$this->uri->segment(3));
    $this->db->where('publish',1);
    $this->db->where('viewed >= ',5);
    $this->db->order_by('id','DESC');
    $this->db->limit($limit);
    $query = $this->db->get('news');    
    return $query->result();
} //thanks to kumar_v

和我的观点(home.php)作为“热门新闻”的一部分:

<h2>Most Popular News :</h2>
<?php
foreach ($hasil5 as $data5):
?>  
  <div class="welcome clear"><img class="imgl" src="<?php echo base_url(); ?>assets/news/original/<?php echo $data5->image; ?>" alt="" height="119" width="125" />
    <div class="fl_right">
      <h2><?php echo anchor($data5->kategori.'/detail/'.$data5->id,$data5->title) ?></h2>
      <p><?php echo $data5->sinopsis; ?></p>
      </div>
  </div>

<?php
    endforeach;
?> 

结果为NULL,你能再次纠正吗?感谢..

3 个答案:

答案 0 :(得分:1)

试试这个:

function popular_list($limit = 2) {
    $query = $this->db->select('*')
                  ->where('id',$this->uri->segment(3))
                  ->where('publish',1)
                  ->where('viewed >= ',5)
                  ->order_by('id','DESC')
                  ->limit($limit)
                  ->get('news');

    print_r($query->result());
    return $query->result();
}

您可以将整个内容放在$query变量中。而且,您可以通过将参数放在数组中来改善$this->db->where()

答案 1 :(得分:1)

你应该修改你的代码:

<?php
  foreach ($data['hasil5'] as $data5):
?>    

您在foreach循环中使用了错误的变量。

答案 2 :(得分:1)

检查查询是否会返回任何行是个好主意。

function popular_list($limit=2)
{   
    $result = null;
    $this->db->select('news.*');
    $this->db->where('id',$this->uri->segment(3));
    $this->db->where('publish',1);
    $this->db->where('viewed >= ',5);
    $this->db->order_by('id','DESC');
    $this->db->limit($limit);
    $query = $this->db->get('news');    
    if($query->num_rows() > 0)
    {
        $result = $query->result();
    }
    return $result;
}