Ошибка: неопределенное свойство $ load

Я новичок в codeigniter, и я разработал код для выполнения запросов в базе данных. Я загружаю базу данных с помощью $this->load->database(); и выполнить запрос, но когда я запускаю код, браузер дает мне следующее сообщение об ошибке:

 A PHP Error was encountered Severity: Notice Message: Undefined property: Tutorial::$load. Fatal error: Call to a member function database() on a non-object 

Это код, который я использую:

 class Tutorial extends CI_Controller { public function tutorial() { $this->load->database(); $query = $this->db->query('SELECT user,pass,email FROM tablex'); foreach ($query->result() as $row) { echo $row->title; echo $row->name; } 

Я уверен, что переменные $db в моем файле конфигурации базы данных установлены правильно, и я даже попробовал автозагрузку базы данных для всех страниц в файле конфигурации autoload.php; все еще имея ту же проблему. Любые идеи, как это сделать?

+ Изменить

 $this->load->database(); 

в

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

база данных не является прямым методом. Это библиотека в кодеигнитре, и вам нужно загрузить ее как библиотеку.

Вы также можете автозагрузить библиотеку database в autoload.php .

ОБНОВИТЬ:

Вы используете одно и то же имя для своего класса и метода. В PHP4 метод, который имеет то же имя, что и имя класса, рассматривался как конструктор, но если вы используете codeigniter 2+, вам нужно использовать конструктор PHP5, который

 function __construct() { parent::__construct(); /*Additional code which you want to run automatically in every function call */ } 

Вы не можете присвоить методу имя с именем класса в Codeigniter 2+. Измените метод на что-нибудь еще. Вы можете указать index метода, если хотите, чтобы он загружался по умолчанию.

Это должно решить вашу проблему.

Руководство пользователя CodeIgniter, Создание разделов библиотек :

Для доступа к собственным ресурсам CodeIgniter в вашей библиотеке используйте функцию get_instance () . Эта функция возвращает суперъект CodeIgniter. Обычно из функций контроллера вы вызываете любую из доступных функций CodeIgniter, используя конструкцию $ this .

$ this , однако, работает только внутри ваших контроллеров, ваших моделей или ваших просмотров. Если вы хотите использовать классы CodeIgniter из своих собственных пользовательских классов, вы можете сделать это следующим образом:

Сначала назначьте объект CodeIgniter переменной:

 $CI =& get_instance(); 

Когда вы назначили объект переменной, вы будете использовать эту переменную вместо $ this :

 $CI =& get_instance(); $CI->load->helper('url'); $CI->load->library('session'); $CI->config->item('base_url'); etc. 

Надеюсь это поможет. Вы также можете поместить $ CI в конструктор.

Ваш код будет выглядеть примерно так:

 class Tutorial { public $CI; /** * Constructor. */ public function __construct() { if (!isset($this->CI)) { $this->CI =& get_instance(); } $this->CI->load->database(); } }