我尝试使用功能但面临问题。我在网上做研究,但没有解决方案
我有一个模特。您可以在下面看到: <?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
为什么?
答案 0 :(得分:2)
$userID = $this->giris->kayitmodel($username, $password);
这是错误的。 giris
是您的控制器,目前为$this
。 kayitmodel
是你的模特。然后,您需要在模型上调用函数。
$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');
}