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();データベースライブラリがロードされている場合にのみ機能します。

アプリケーション全体でデータベースを使用する予定がある場合は、.in に追加することをお勧めしautoload.phpます/application/config/

他の人が述べたように、CI_クラス名からプレフィックスを削除してください。CI_フレームワーク クラス用に予約されています。

于 2012-11-02T19:24:50.610 に答える
3

データベースライブラリを自動ロードする'$this->load->library('database')'前にモデルで使用する必要があります。'$this->db->insert()'config フォルダーに移動し、autoload.php で $autoload['libraries'] を検索して、空の array() を array('database') に置き換えます。

于 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 に答える