【问题标题】:Fatal error: Call to a member function query() on a non-object in (CodeIgniter)致命错误:在 (CodeIgniter) 中的非对象上调用成员函数 query()
【发布时间】:2015-04-14 18:52:32
【问题描述】:

我是 codeigniter 的新手,这是我的第一个模型控制器连接,所以您提出的任何建议对我都有帮助,并且会考虑点以供我将来理解,请在此处帮助解决

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\xampp\ci\CI_test\application\models\testquery.php on line 7

我的控制器:

class Testdb extends CI_Controller
   {
    public function Index()
    {
        $this->load->model("testquery");
        $data['results'] = $this->testquery->query1();

        $this->load->view("view_db");
    }
   }

我的模特是:

class Testquery extends CI_Model
{
    public function query1()
    {
        $query = $this->db->query("SELECT * from color"); //this is line 7 error

        /**
        $sql = "SELECT * from color";       
        $query = $this->db->query($sql); 
        foreach ($query->result() as $row)
        {
           echo $row->color_id;
           echo $row->color_name;
           echo $row->color_desc;
        }
         */
        return $query->result();
    }
}

我的看法是:

<<!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
</head>
<body>
<h1>Welcome db</h1>
<?php 
print_r($results);
?>
</body>
</html>

我的连接详情:

config/database.php 有-

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'varundb';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

我的 config/autoload.php 有-

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

我错过了什么吗?我也浏览过其他帖子 人们建议的地方-

  • 在我使用 db 的每个函数中加载数据库。
  • 不要链接查询(完成后我会尝试)。
  • 更改组名。

我正在使用 XAMPP 服务器,数据库很好(我看到了表,其中的数据)。 做了所有,我仍然得到错误!

【问题讨论】:

  • 能否请您显示加载数据库的行。
  • 感谢@Whirlwind 的回复,但是,它会在哪里?我还没有加载任何我的模型或控制器或视图?你能建议怎么做吗?
  • 这个错误表明你的数据库没有加载。我看到你已经在自动加载时加载了数据库。在这种情况下,检查你的数据库配置是否正常,比如用户名 dbname dbdriver 等。
  • 哦,是的,他正在使用自动加载。 @varunkumar - 有两种加载数据库的方法。使用自动加载或 $this->load->database();显然,您使用的是自动加载方法,所以按照 Shaiful Islam 的指示进行操作。
  • 我必须做什么@ShaifulIslam 你能给我具体的吗?我正在努力理解和学习

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

您必须需要加载数据库。

class Testdb extends CI_Controller
   {
function __construct() {
        parent::__construct();

        $this->load->database();
        $this->load->model("testquery");
    }
    public function Index()
    {
       $data['results'] = $this->testquery->query1();
       $this->load->view("view_db");
    }
   }

【讨论】:

  • 在 Config.php 文件中你也可以像这样加载 $autoload['libraries'] = array('database');
  • 我已经在我的配置文件中完成了这个,但是我按照你的建议在控制器中尝试了,错误仍然存​​在。没有变化!
  • 在 testquery model function __construct() { parent::__construct(); 中试试这一行}
  • 试试这个 $this->load->database('default',TRUE);
【解决方案2】:

__construct() 方法添加到控制器和模型中。 你不需要省略这些。

【讨论】:

  • 是的,这样做是为了更好地理解。但不能解决问题!!
  • 试试$query = $this-&gt;db-&gt;get('color');
  • 致命错误:在非对象中调用成员函数 get() ......同样的错误!!只是方法名称会随着我根据您的代码更改而更改
  • 请严格遵守文档。应该用大写加载你的模型。按照 CI/docs/model 页面的说明,确认简单查询不再起作用或确认问题已解决。
  • 好吧,复制代码并创建模型,按照 codeigniter @Tpojka 的建议创建控制器它没有帮助,仍然是同样的错误,thanx 无论如何
【解决方案3】:

试试这个: 保持案件真实 $this->load->model("Testquery",'',TRUE);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多