【问题标题】:A PHP Error was encountered Severity: Notice Message: Undefined variable: data Filename: profile/viewabout.php Line Number: 79 [duplicate]遇到 PHP 错误严重性:通知消息:未定义变量:数据文件名:profile/viewabout.php 行号:79 [重复]
【发布时间】:2017-09-12 04:30:45
【问题描述】:

控制器: 我正在尝试从数据库中获取记录,但它在视图部分显示未定义的变量 $data。什么问题我不明白。

public function vabout(){
    if(!$this->session->userdata('logged_in')){
        redirect('register/login');
    }
    $this->load->model('profile_model');
    $data = $this->profile_model->viewprofile();

    $this->load->view('templates/pheader');
    $this->load->view('profile/viewabout',$data);
    $this->load->view('templates/pfooter');

}

模型:这是模型部分,模型获取记录有问题吗?

public function viewprofile(){
    $data = $this->db->get('profile');
    return $data->row_array();
}

查看: errore:遇到php错误 $data 未定义

<?php
      foreach ($data as $row)
        { ?>
        <p><?php echo $row->id; ?></p>
        <p><?php echo $row->name; ?></p>
        <?php
      }
  ?>

【问题讨论】:

    标签: php codeigniter for-loop undefined codeigniter-3


    【解决方案1】:

    您需要传递带有key 名称$data 的数组不包含data 作为键名,您使用data 传递的每个key 数组都将在视图中变为变量

    public function vabout(){
                    if(!$this->session->userdata('logged_in')){
                        redirect('register/login');
                    }
                    $this->load->model('profile_model');
                    $data['data'] = $this->profile_model->viewprofile(); // add data as index
    
                    $this->load->view('templates/pheader');
                    $this->load->view('profile/viewabout',$data);
                    $this->load->view('templates/pfooter');
    
                }
    

    此外,您正在像对象一样检索视图中的数据。所以在模型中不将结果转换为数组

    public function viewprofile(){
        $data = $this->db->get('profile');
        return $data->result();
    }
    

    【讨论】:

    • 它不起作用@B。德赛还是谢谢..
    【解决方案2】:

    用这个替换你的代码:控制器

     public function vabout($id = NULL){
            if(!$this->session->userdata('logged_in')){
                redirect('register/login');
            }
            $this->load->model('profile_model');
            $data['data'] = $this->profile_model->viewprofile($id);
    
            $this->load->view('templates/pheader');
            $this->load->view('profile/viewabout',$data);
            $this->load->view('templates/pfooter');
    
        }
    

    用这个替换模型。是这样吗?

    型号:

    public function viewprofile($id = FALSE){
         if($id === FALSE){
            $query = $this->db->get('profile');
            return $query->result_array();
          }
             $query = $this->db->get_where('profile',array('id' => $id);
             return $query->row_array();
        }
    

    查看:

    <?php
                  foreach ($data as $row)
                    { ?>
                    <p><?php echo $row['id']; ?></p>
                    <p><?php echo $row['name']; ?></p>
                    <?php
                  }
              ?>
    

    【讨论】:

    • 感谢@flixy 成功了....
    • 随时@SohailShaikh
    • @SohailShaikh 两个返回在同一个函数中,你是认真的吗?
    • 是@AlivetoDie 我也很惊讶。同样在模型$id 中必须是未定义的错误。我提出了相同的解决方案(但有对象)。在这里他说它有效,;p
    • 是的@AlivetoDie
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2016-02-25
    相关资源
    最近更新 更多