5

现在我正在学习 Codeigniter。我有更多的数据库,所以这次我选择了 Anketa 一个。为什么是错误:

**Fatal error: Call to a member function query() on a non-object in /var/www/domains/svastara/application/controllers/anketa.php on line 12** ???

我查了一下,用户和传入数据库都可以,数据库在conf中加载,并破解了表名。那么还有什么呢?

$this->db = $this->load->database('anketa');

        $q = $this->db->query("SELECT * FROM anketaip");

        if($q->num_rows()>0){
        foreach ($q->result() as $row)
        {
            $data[] = $row;
        }

        }return $data;

        $this->load->view('anketa_nova', $data);
4

5 回答 5

3

在您将第二个参数传递为 TRUE 之前,下面的行不会返回您的数据库对象

改变:

$this->db = $this->load->database('anketa');

$newdb = $this->load->database('anketa',TRUE);

$q = $newdb->query("SELECT * FROM anketaip");

参考链接:http ://codeigniter.com/user_guide/database/connecting.html

于 2012-10-17T10:02:51.690 回答
3

你不必这样做

$this->db = $this->load->database('anketa');

你可以简单地这样做

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

$this->db->query('blah blah');

还要确保数据库存在并且您有权访问它。

于 2012-10-17T11:46:47.780 回答
1

可能您需要加载数据库库,请检查您正在加载数据库库的 autoload.php

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

或者在你的控制器中加载库

$this->load->library('database');
于 2012-10-17T10:03:42.213 回答
0

嗨丹妮拉,

我认为这个资源链接可以帮助你。因为当您一次使用多个数据库时,您需要遵循 GDB 在他的帖子中解释的语法。但是您说无法访问数据库,这意味着它无法检测到配置文件夹中的数据库,php。因此,将该文件链接从外部放在您的 php 文件中。然后它可能会起作用。

http://codeigniter.com/forums/viewthread/191673/

于 2012-10-17T10:14:56.920 回答
0

这就是问题所在。我设置$db['default']['autoinit'] = TRUE 并且它起作用了。

于 2015-09-14T10:39:13.217 回答