简体   繁体   中英

Fatal error: Call to a member function, on a non-object, codeigniter controller

Here's my controller profileinfo.php

<?php
class Profileinfo extends CI_Controller {

    function index()
    {

        $this->load->helper(array('form', 'url'));
        $this->load->model('aluminsert','', TRUE);
        $this->load->library('form_validation');

        $this->form_validation->set_rules('name', 'Name', 'required');
        $this->form_validation->set_rules('branch', 'Bramch', 'required');
        $this->form_validation->set_rules('academicinterest', 'Academic Interest', 'required');
        $this->form_validation->set_rules('internshipdetail', 'Internship Details', 'required');
        $this->form_validation->set_rules('interest_hobbies', 'Interest and hobbies', 'required');
        $this->form_validation->set_rules('personalblog', 'Personal Blog', 'required');
        $this->form_validation->set_rules('facebookprofile', 'Facebook Profile', 'required');
        $this->form_validation->set_rules('linkedinprofile', 'Linkedin Profile', 'required');
        $this->form_validation->set_rules('homecity', 'Home city', 'required');
        $this->form_validation->set_rules('country', 'country', 'required');
        $this->form_validation->set_rules('higherdegree', 'Higher Degree', 'required');
        $this->form_validation->set_rules('collegeofeducation', 'College of Education', 'required');
        $this->form_validation->set_rules('officialemail', 'Official Email', 'required');
        $this->form_validation->set_rules('careerinterests', 'Career Interest', 'required');
        $this->form_validation->set_rules('presentemployer', 'Present Employer', 'required');
        $this->form_validation->set_rules('presentjob', 'Present Job', 'required');
        $this->form_validation->set_rules('previousemployer', 'Previous Employee', 'required');
        $this->form_validation->set_rules('startupname', 'Startup Name', 'required');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('alumprofile');

        }
        else
        {
            $alumdata = array(
            'Name' => $this->input->post('name'),
            'Branch' => $this->input->post('branch'),
            'Academic Interest' => $this->input->post('academicinterest'),
            'Internship Details' => $this->input->post('internshipdetail'),
            'Interest and hobbies' => $this->input->post('interest_hobbies'),
            'personalblog' => $this->input->post('personalblog'),
            'Facebook profile' => $this->input->post('facebookprofile'),
            'Linkedin profile' => $this->input->post('linkedinprofile'),
            'Home city' => $this->input->post('homecity'),
            'country' => $this->input->post('country'),
            'Higher Degree' => $this->input->post('higherdegree'),
            'College of Education' => $this->input->post('collegeofeducation'),
            'Official Email' => $this->input->post('officialmail'),
            'Career Interest' => $this->input->post('careerinterests'),
            'Present Employer' => $this->input->post('presentemployer'),
            'Present Job' => $this->input->post('presentjob'),
            'Previous Employee' => $this->input->post('previousemployer'),
            'Startup Name' => $this->input->post('startupname'),
            );
            // Transfering Data To Model
            $this->insert->alum_insert($alumdata);
            $this->load->view('registration_success');
        }
    }
}
?>

and here's is my model aluminsert.php

<?php
class Aluminsert extends CI_Model{
    function __construct() {
        parent::__construct();
    }
    function alum_insert($alumdata){

        $this->db->insert('user_detail', $alumdata);
    }
}
?>

form validation is working and after submitting the form, the error shown is: Fatal error: Call to a member function alum_insert() on a non-object in C:\\wamp\\www\\ci\\application\\controllers\\profileinfo.php on line 61

The error lies in the code below. You are trying to call a method from the 'insert' class which in this case does not exist in your model.

$this->insert->alum_insert($alumdata);
$this->load->view('registration_success');

Your Model is called 'Aluminsert' and the method you are using to insert is called 'alum_insert' so you should rather do this.

$this->aluminsert->alum_insert($alumdata);
$this->load->view('registration_success');

In codeigniter we need to load the database. So there are two ways

  1. Either you can autoload it or
  2. Load where ever you need it.

In autoload.php ,you have to write the below line.

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

OR

In other manner you can also load in following manner :-

$this->load->database();

Surely it will help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM