在非对象上调用成员函数kayitmodel()

时间:2012-02-29 18:54:33

标签: php codeigniter

我尝试使用功能但面临问题。我在网上做研究,但没有解决方案

我有一个模特。您可以在下面看到:

   <?php

class kayitmodel extends CI_Model {

    function User_model() {
        parent::Model();
    }

    function uyeEkle($username, $email, $password, $activationCode) {
        $sha1_password = sha1($password);

        $query = "insert into pasaj_register(username,email,password,activationCode) values(?,?,?,?)";
        $this->db->query($query, array($username, $email, $sha1_password, $activationCode));
    }

    function uyeOnay($registrationCode) {
        $query = "SELECT id FROM pasaj_register where activationCode = '" . $registrationCode . "' and active != 1";
        $result = $this->db->query($query, $registrationCode);

        if ($result->num_rows() == 1) {
            $query = "UPDATE pasaj_register SET active = 1 WHERE activationCode = ?";
            $this->db->query($query, $registrationCode);

            return true;
        } else {
            return false;
        }
    }

     function girisKontrol($username, $password) {
        $sha1_password = sha1($password);
        $query = "SELECT id FROM pasaj_register WHERE username = ? and password = ?";

        $result = $this->db->query($query, array($username, $sha1_password));

        if ($result->num_rows() == 1)
            return $result->row(0)->id;
        else
            return false;
    }



}

在giris控制器中我使用girisKontrol功能

<?php

class giris extends CI_Controller {

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

    public function index() {
        $this->load->model('kayit/kayitmodel');
        $this->load->view('giris/giris');
    }


    public function main_page() {

        extract($_POST);


        $userID = $this->giris->kayitmodel($username, $password);


        if(!userID)
            echo "yok";
        else 
            echo "var"; 
    }

}

?>

但是当处理页面时,它会出错:

Fatal error: Call to a member function kayitmodel() on a non-object in C:\xampp\htdocs\pasaj\application\controllers\giris.php on line 20
为什么?

1 个答案:

答案 0 :(得分:2)

 $userID = $this->giris->kayitmodel($username, $password);

这是错误的。 giris是您的控制器,目前为$thiskayitmodel是你的模特。然后,您需要在模型上调用函数。

 $userID = $this->kayitmodel->girisKontrol($username, $password);

同样在你的模特中:

function User_model() {
    parent::Model();
}

应该是:

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

编辑:模型需要以大写字母开头,其余为小写字母。文件名也应该是类名,但都是小写的 手动:http://codeigniter.com/user_guide/general/models.html

这应该在名为kayitmodel.php的文件中(注意小写的'k')。

class Kayitmodel extends CI_Model { // Note the capital 'K'

您的电话应更改为:

$userID = $this->Kayitmodel->girisKontrol($username, $password); // Note the capital 'K'

EDIT2:您的控制器也应以大写字母开头 手动:http://codeigniter.com/user_guide/general/controllers.html

class Giris extends CI_Controller { // Note the capital 'G'

EDIT3:您需要在控制器的构造函数中加载模型,因此内部的所有方法都可以使用它。

class Giris extends CI_Controller {

    public function __construct() {
        parent::__construct();  // Make sure this is the 1st line in the constructor
        $this->load->model('kayit/kayitmodel');
    }