【问题标题】:CodeIgniter -Error Call to a member function model() on a non-objectCodeIgniter - 错误调用非对象上的成员函数模型()
【发布时间】:2015-04-18 07:30:30
【问题描述】:

我正在创建一个注册。每当我尝试向 db 插入数据时,都会引发此错误。

遇到 PHP 错误 严重性:通知消息:未定义 属性:insert_ctrl::$insert_model 文件名: 控制器/insert_ctrl.php 行号:38 致命错误:在非对象上调用成员函数 form_insert() C:\xampp\htdocs\NewProject\application\controllers\insert_ctrl.php on 第 38 行

这是我的 insert_ctrl.php

<?php

class insert_ctrl extends  CI_Controller{

    function _construct()
    {
        parent :: _construct();
        $this->insert_model->form_insert($data);

    }

    function index()
    {
        //Including validation library
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<div class ="error">','</div>');

        //Validating name field
        $this->form_validation->set_rules('dname','Username','required|min_length[5]|max_length[15]');
        $this->form_validation->set_rules('demail','Email','required|valid_email');
        $this->form_validation->set_rules('dmobile','Mobile No.');
            $this->form_validation->set_rules('daddress','Adress','required|min_length[10]|max_length[50]');

            if($this->form_validation->run()==FALSE)
            {
                $this->load->view('insert_view');
            }
            else {
                //Setting values for db table
                $data=array(
                    'Student_Name'=>$this->input->post('dname'),
                    'Student_Email'=>$this->input->post('demail'),
                    'Student_Mobile'=>$this->input->post('dmoblie'),
                    'Student_Address'=>$this->input->post('daddress')

                );
                //Transfering data to model
                $this->insert_model->form_insert($data);
                //loading view
                $this->load->view('insert_view');
            }
        }
    }

//insert_model.php

<?php
class insert_model extends  CI_Model{
    function _construct()
    {
        parent :: _construct();


    }

    function form_insert($data)
    {
        $this->db->insert('student',$data);
    }
}
?>

【问题讨论】:

  • 您的代码看起来不错,只需将构造函数代码更改为 $this->load->model('insert_model');
  • 我做到了。但它仍然给出一个错误
  • 这甚至没有进入到 insert_model.php 请帮助meee

标签: php codeigniter


【解决方案1】:

我的控制器-insert_ctrl.php

class insert_ctrl extends  CI_Controller{

function __construct()
{
    parent :: __construct();
    $this->load->model('insert_model');

}

function index()
{

        $this->insert_model->form_insert();
        echo "Clear";


}

}

我的模型- insert_model.php

class insert_model extends  CI_Model{
    function __construct()
    {
        parent :: __construct();


    }

    function form_insert()
    {
        echo "model loaded Successfully";
    }
}

此模型和控制器的名称与您的完全一致。检查模型是如何被加载和调用的。

您可以通过在 php 文件顶部添加以下代码行来克服内存限制错误。

ini_set("memory_limit","512M");

【讨论】:

    【解决方案2】:

    你调用了错误的模型函数:

    You call $this->load->model('Insert_model');
    

    这意味着你的模型是 Insert_model

    而不是这个:

     $this->insert_model->form_insert($data);
    

    你使用

    $this->Insert_model->form_insert($data);
    

    将您的构造函数代码更改为

    function _construct()
        {
            parent :: _construct();
            $this->load->model('insert_model');
    
        }
    

    【讨论】:

    • 对不起,我的错。我只是做错了。我像这样改变了,但它仍然给我同样的错误。
    • 请提交您的型号代码并更改您的型号名称
    • 但您仍然没有更改型号名称
    • @Akisha 我在我的代码中添加了几行你需要更改你的构造函数代码
    • 对不起,我在我的项目中做了改变,只是这里没有改变。顺便说一句,非常感谢你,我会试试这个
    【解决方案3】:

    改变这一行

    $autoload['libraries'] = array();

    $autoload['libraries'] = array('database');

    config\autoload.php

    【讨论】:

      【解决方案4】:

      添加这一行:$this-&gt;load-&gt;model('modelName');

      function __construct()
      {
          parent :: __construct();
          $this->load->model('modelName');
      
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        • 2014-10-17
        • 2015-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多