代码点火器错误?

时间:2013-06-12 11:45:43

标签: php codeigniter syntax-error

有人可以帮助我,我是CI的新手,我不知道我做错了什么。

我有这种控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class main extends CI_Controller {
 public function index() {
     $this->home();
 }

 public function home() {
    $this->load->helper('url');
    $this->load->model("get_db");
    $data['results']=$this->get_db->getAll();
    $this->load->view("view_home", $data);
 }
}

模型get_db就像这样

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class get_db extends CI_Model {
        public function getAll() {
        $query=$this->db->query("SELECT * from tekstovi");
        return $query->result();
    }
}

我有这样的奇怪错误

**A PHP Error was encountered
Severity: Notice
Message: Undefined property: main::$db
Filename: core/Model.php
Line Number: 51**

知道要纠正什么吗?

3 个答案:

答案 0 :(得分:1)

// Location: application/controllers/main.php
class Main extends CI_Controller {

    public function index() { 

        $this->home();

    }

    public function home() { 

        $this->load->model('home_model');

        $data['results'] = $this->home_model->getAll();

        $this->load->view("view_home", $data);

    }
}

// Location: application/models/home_model.php
class Home_model extends CI_Model {

public function getAll() {

        $query=$this->db->query("SELECT * from tekstovi");

        return $query->result();

    }

}

如果你看一下CodeIgniter's User Guide,我觉得这对你很有帮助。

编辑:如果您正在做这些事情并且仍然有问题,请确保未修改核心文件。如果是,您可以重新安装应用程序(下载和更新文件),一切都应该有效。

答案 1 :(得分:1)

您需要将__construct()添加到控制器和模型中。请尝试以下方法。

您的控制器

class main extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
    }

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

public function home() 
{
    $this->load->helper('url');
    $this->load->model("get_db");
    $data['results']=$this->get_db->getAll();
    $this->load->view("view_home", $data);
   }

 }

你的模特。

class Get_db extends CI_Model
{
    function __construct()
    {
    parent::__construct();

    }

    // here is your code
    public function getAll() {
        $query=$this->db->query("SELECT * from tekstovi");
        return $query->result();
    }
}

答案 2 :(得分:0)

正如@nevermind所指出的,你需要纠正你的类的命名。

  

类名必须首字母大写其余部分   名称小写。确保您的类扩展了基础Model类。

     

文件名将是您的班级名称的小写版本。

我看到的下一个问题是你的模型中没有构造函数。将以下代码添加到模型中。

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

您的模型的函数public没有问题。