2

我正在尝试在codeigniter中将数据插入mysql。控制器类:

class Ci_insert extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
        }

        function index()
        {
            $data = array(
                          "USN" => "TRE5rCS89G",
                          "name" => "NITISH DOLAKASHARIA",
                          "branch" => "CS"
                          );

            $this->load->model('ci_insert_model');

            $this->ci_insert_model->addToDb($data);
        }

    }

模型类:

class ci_insert_model extends CI_Model
    {
        function __construct()
        {
            parent::__construct();
        }
        function addToDb($data)
        {

            //var_dump($data);
            $this->db->insert('class_record',$data);
        }
    }

但是当我尝试运行代码时,它显示Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\CodeIgniter\application\models\ci_insert_model.php on line 12.

上面的代码有什么问题?

4

4 回答 4

10

你不见了$this->load->database();

$this->db->method_name();仅在加载数据库库时才有效。

如果您打算在整个应用程序中使用数据库,我建议将其添加到您的autoload.phpin /application/config/.

正如其他人所提到的,CI_从你的类名中删除前缀。CI_为框架类保留。

于 2012-11-02T19:24:50.610 回答
3

在配置文件夹中添加自动加载库打开 autoload.php 并设置$autoload['libraries'] = array('database');

于 2015-02-25T15:36:38.987 回答
3

您必须'$this->load->library('database')'在模型之前使用'$this->db->insert()' 或自动加载数据库库。转到配置文件夹选择 autoload.php 搜索 $autoload['libraries'] 并将空数组()替换为数组('数据库')。

于 2012-11-02T19:25:17.003 回答
1

试用。

控制器:insert.php

class Insert extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $data = array(
                      "USN" => "TRE5rCS89G",
                      "name" => "NITISH DOLAKASHARIA",
                      "branch" => "CS"
                      );

        $this->load->model('insert_model');

        $this->insert_model->addToDb($data);
    }

}

型号:insert_model.php

class Insert_model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }
    function addToDb($data)
    {

        //var_dump($data);
        $this->db->insert('class_record',$data);
    }
}

请在类的第一个后面写大写,不要添加前缀ci_

于 2012-11-02T17:12:57.027 回答