4

重複の可能性:
CodeIgniter - 非オブジェクトでメンバー関数 select() を呼び出す

私はコードイグナイターの初心者で、いくつかの問題があります。

エラー メッセージ: 致命的なエラー: 12 行目の C:\xampp\htdocs\moi\CI\application\models\model_users.php の非オブジェクトに対するメンバー関数 where() の呼び出し

私のモデル:

class Model_users extends CI_Model {

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

public function can_log_in() {


    $this->db->where('email', $this->input->post('email'));
    $this->db->where('pass', md5($this->input->post('password')));
    $query = $this->db->get('users');

    if ($query->num_rows()==1) {
        return TRUE;
    } else {
        return FALSE;
    }

私のコントローラー:

class Main extends CI_Controller {

public function index() {
    $this->login();
}

//Auslagern der Funktionen
public function login() {
    $this->load->view('login');
}

public function login_validation() {

    $this->load->library('form_validation');

    $this->form_validation->set_rules('email', 'email', 'required|valid_email|xss_clean|callback_username_check');
    $this->form_validation->set_rules('password', 'password', 'required|md5');

    if ($this->form_validation->run()) {
        redirect('main/members');
    } else {
        $this->load->view('login');
    }
}

public function username_check() {
    $this->load->library('form_validation');
    $this->load->model('model_users');
    if ($this->model_users->can_log_in()) {
        return TRUE;
    } else {
        $this->form_validation->set_message('username_check', 'incorect User or Passwort.');
        return FALSE;
    }
}

}

助けてください

4

4 に答える 4

1

下記URL参照

CodeIgniter - 非オブジェクトでメンバー関数 select() を呼び出す

それを試してみてください

class User_model extends CI_Model { 

     public function __construct() 
     {
           parent::__construct(); 
           $this->load->database();
     }

     public function can_log_in() {


        $this->db->select('*');
        $this->db->from('user');
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', md5($this->input->post('password')));
        $validate_user = $this->db->get();

       if ($query->num_rows()==1) {
         return TRUE;
       } else {
         return FALSE;
      }


}

}
于 2012-10-11T19:50:00.197 に答える
1

$this->db定義されていないようです。$dbモデル内にプロパティ名がないようです。

$this->load->database();データベースを初期化するために: を使用しましたか?

次のコードを試してください。

class Model_users extends CI_Model {

    function __construct(){
        parent::__construct();
        $this->load->database();
    }

情報の
例: http://maestric.com/doc/php/codeigniter_models
ユーザー ガイド: http://ellislab.com/codeigniter/user_guide/database/examples.html

于 2012-10-11T19:48:24.067 に答える
0

データベースが自動ロードされていますか? そうでない場合は、おそらく次のコードをコンストラクターに追加する必要があります。

$this->load->database();
于 2012-10-11T19:46:41.660 に答える
0

あなたが抱えている問題は、特定のCodeigniterにもデータベースにもあまり関係していません。

まず第一に、標準的な PHP エラーです。一般的な情報については、を参照してください。

あなたの場合 - Codeigniter を少し忘れてください - これは、ボットに失敗するコード行があることを意味し$thisます:->db->load

$this->db->where('email', $this->input->post('email'));
$this->load->database();

これにはさらにデバッグが必要であることは明らかです。これらのライブラリがロードされないのはなぜですか? データベースをロードすることさえできないのはなぜですか?

実際には、これにはさらにデバッグが必要です。あなたがさらにコメントで尋ねることは、私の目には意味がありません。他のユーザーは、あなたが質問で良い情報を提供するのと同じくらい良い答えしか出せません. しかし、質問をすることも常に制限されています。

まず最初に、モデル クラスの完全なコードを投稿してください。モデルクラス自体がすでにねじ込んでいるだけかもしれません。ここで新鮮な目で何かを見つけるのは早いです。

しかし、それを保証するものではなく、あくまでも可能性です。他の場所でもそれを破ることができます。これらに到達するのは難しいため、開発環境で Xdebug などのステップ デバッガーを使用して行うことをお勧めします。

于 2012-10-12T19:57:29.060 に答える