在视图页面中回显

时间:2011-08-12 12:17:04

标签: php codeigniter

我正在尝试在视图中回显我的数据库的一个字段,但是我收到了错误:

  

消息:尝试获取非对象的属性

     

文件名:views / admin_view_report.php

     

行号:7

当我回显整个阵列时,它运行得很好。我找不到什么是错的。

我的控制器的一部分:

function index(){
    $this->load->model('viewreport');
    $data['records']=$this->viewreport->getAllByChk();
    $this->load->view('admin_view_report',$data); 
}

我的部分模型:

function getAllByChk(){
    $q = $this->db->get('info');
    if ($q->num_rows()>0){
        foreach ($q->result_array() as $row)
        {
            $data[]=$row;
        }
        return $data;
    }
}

观点:

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

    <?php echo $row->subject; ?>

<?php endforeach;?>

如果我只打印data['records'],则会提供以下输出

Array
(
    [0] => Array
        (
            [id] => 1
            [address] => 11/siddeshwari
            [area] => sid
            [lat] => 21
            [lng] => 21
            [subject] => hello
            [problem] => lots of problem
            [image] => 
            [time] => 2011-08-11 23:49:29
            [register_id] => 1
            [category_id] => 1
            [city_city_id] => 1
            [status_status_id] => 0
        )

    [1] => Array
        (
            [id] => 2
            [address] => 134 banani
            [area] => banai
            [lat] => 1223
            [lng] => 2133
            [subject] => not working
            [problem] => yesproblem problem problem
            [image] => 
            [time] => 2011-08-12 01:09:44
            [register_id] => 1
            [category_id] => 2
            [city_city_id] => 1
            [status_status_id] => 0
        )

)

但是当我尝试打印问题或主题时,它只会出错。

4 个答案:

答案 0 :(得分:2)

result_array()返回一个数组数组,而不是对象。

在您看来:

$row->subject

应该是:

$row['subject']

如果您希望$ row成为对象,请将result_array()更改为result()。这将为您提供一系列对象。

foreach ($q->result_array() as $row)也是多余的。

只是将$q->result_array()复制到$data

您不需要这样做,只需return $q->result_array();

答案 1 :(得分:1)

我会做以下

function getAllByChk()
{
    $q = $this->db->get('info');
    if ($q->num_rows() > 0)
    {
        return $data->result();
    }
    return false;
 }

然后在视图中

if($records) :
    foreach($records as $row) :
      print_r($row);
    endforeach;
else:
    echo 'No Records';
endif;

答案 2 :(得分:0)

function getAllByChk(){
    $data = array();
    //remove if

此外,以对象$q->result()echo $row['subject']

获取结果

答案 3 :(得分:-1)

您也可以返回结果()

          function getAllByChk(){

$q = $this->db->get('info');
        if ($q->num_rows()>0){
         foreach ($q->result_array() as $row)
          {
           $data[]=$row;

             }
         return $data->result();
          }
             }