【问题标题】:Codeigniter Call to a member function database() on a non-object inCodeigniter 在非对象上调用成员函数 database()
【发布时间】:2013-02-25 19:42:34
【问题描述】:

是的,是的,我已经在整个互联网上搜索过这个问题。发现了一些结果,甚至来自 Stackoverflow。但他们中的大多数人说“你应该自动加载数据库”,或者“parent::__construct();”像代码。我几乎都试过了。还是没有结果。简直要了我的命。

我有一个名为“we”的表。我只需要从中读取数据。

模型: application/models/we_model.php

 class We_model extends CI_Model {

    function __construct() {

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

    public function get_all_we() {

        $query = $this->db->get('we');
        return $query->result();
    }
}

控制器: applicatoin/controllers/home.php

class Home extends CI_Controller {

    function __construct() {

        parent::__construct();
        $this->load->model('we_model');
    }

    public function index() {

        $data['we_lists'] = $this->we_model->get_all_we();
        $this->load->view('home_template_view', $data);
    }
}

自动加载: application/config/autoload.php

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

截图:

我正在使用 Codeigniter 2.1.3、Wampserver 2.2e、PhpStorm 5.0.4 并遵循 this 教程。

更新: 我读了this forum。他说,在将编辑器从 Eclipse 切换到 Dreamweaver 之后,代码就可以工作了。所以我改变了我的 IDE,从 PHPStorm 到 Sublime text 2。代码现在可以工作了。你能解释一下吗?

【问题讨论】:

  • 可能和这个问题一样的问题?[1] [1]:stackoverflow.com/questions/2686814/…
  • 我已经在研究它了。我添加了 parent::Model();但还是一样。
  • 我换了编辑器。我使用了 Sublime Text 2。现在它可以工作了。发生了什么事!??!

标签: database codeigniter autoload


【解决方案1】:

您的模型中无需调用$this->load->database();

只需在 autoload.php 中使用它:

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

【讨论】:

  • 我放这行是因为代码不起作用。现在它已经被删除了。如果您阅读我的更新,代码现在可以工作。但是我不知道为什么起作用,我只是更改了IDE并从头开始。每一行都和旧的一样。
【解决方案2】:

如果您没有自动加载数据库库(老实说,您确实应该这样做)更改此行:

$this->load->database();

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

【讨论】:

  • 在第 8 行调用 C:\wamp\www\shohtg\application\models\we_model.php 中非对象的成员函数 library()
  • 哦...好吧,如果它甚至无法加载库,那么您的 CI 基础安装就会出现问题。没有办法抛出任何类型的错误。
  • fml.能不能用teamviewer或者远程控制软件查看一下?
  • 尝试添加:$autoload['libraries'] = array('database');到 config 文件夹中的 autoload.php。从 we_model 的构造函数中完全删除该行。我刚离开办公室,还没有安装任何远程软件,抱歉
  • 但是我已经在 autoload.php 中有代码 :( $autoload['libraries'] = array('database', 'session', 'form_validation');
猜你喜欢
  • 2011-12-23
  • 2013-08-23
  • 2012-01-09
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
相关资源
最近更新 更多