致命的なエラー:CodeIgniterでアクティブレコードを使用している場合、メンバー関数insert()を呼び出します。

可能重複:
  非オブジェクト上のメンバ関数への呼び出し
  非オブジェクト上のメンバ関数への呼び出し

CodeIgniters Activeレコードを使用してデータベースにアクセスしようとすると、常にエラーが表示されます

致命的なエラー:非オブジェクトのメンバ関数insert()を呼び出す

     

致命的なエラー:メンバ関数get()を非オブジェクト上で呼び出す

以下は私のデータベースの設定です

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'test';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

私はそれを自動ロードしている

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

以下は私のモデルです

class Leads_model extends CI_Model {

function __construct()
  {
    parent::__construct();
  }

    function insertq(){

        $q=$this->db->insert('test',$data);

        if ($q){

            return true;
        }       
        else
        {
            return false;
        }


    }
}

誰かが私に間違ってやっていることを教えてもらえますか?なぜ私はそのエラーを受けていますか?

1
致命的なエラー:14行目のC:\ wamp \ www \ quest \ application \ models \ leads_model.phpの非オブジェクト上のメンバー関数insert()を呼び出します。私はフォームが提出されたときに$ this-> db-> get()を呼び出します。ビューはコントローラーから正常にロードされますが、私はfor the iエラーを受け取ります。
追加された 著者 LiveEn,
$ this-> db-> get()をどこで呼びますか?このモデルを参照してもよろしいですか?
追加された 著者 Damien Pirsy,

3 答え

あなたは親コンストラクタを呼び出していますか?

class Leads_model extends CI_Model 
{
    function __construct()
    {
        parent::__construct();
    }
   ...
}
2
追加された
はい、既に呼び出されています。
追加された 著者 LiveEn,

それは確かにかなり変です。 確認してください: 1)あなたのエラーは、そのモデルを参照し、別のモデルを参照しないでください。 2)あなたのモデルで__construct()を呼び出す

これらのチェックの両方が合格した場合は、インタイムローディングを試し、問題が解決しないかどうかを確認してください。

class Leads_model extends CI_Model {

  function __construct()
  {
    parent::__construct();
  }

  function test()
  {
    $this->load->database();
    $data = array('field1' => 'value1','field2' => 'value2');
    $this->db->insert('test',$data);
  }

  function run_test()
  {
     $dbo = $this->load->database('default',TRUE);
     $query = $this->$dbo->get('tablename');
     echo $query->num_rows();
  }

}

関数がテストとして接続IDを返すかどうかを見ることもできます:

  $dbobject = $this->load->database('default',TRUE);
  var_dump($dbobject->conn_id);
1
追加された
私がダンプを取得すると、 "リソース(33)(mysql link persistent)"のタイプが得られます。
追加された 著者 LiveEn,
私はモデルのコアにいくつかの変数を追加して自動完成の仕事を得ました。私はすべてが正常に動作することを削除した後。助けてくれてありがとう。しかし、Eclipseの自動完成は機能しません。
追加された 著者 LiveEn,
さて、クラスは完璧に動作し、接続が確立されます。上記のように提案した run_test()関数を実行してみることができますか(単にtablename、obvに変更する)。それでもエラーが出るかどうか確認する
追加された 著者 Damien Pirsy,
IDEを変更するか、習慣から入力を開始してください:Dそしてコアを変更するときは注意してください!
追加された 著者 Damien Pirsy,

問題は、オートコンプリートをモデルコアに適用するための変数をいくつか追加したことです。それはそれらを取り除いた後に問題とその働きを引き起こしていました。

オートコンプリートは現在動作していないようです。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com