Фатальная ошибка: вызов функции-члена result() для не-объекта.(Codignighter)

#php #database #codeigniter

#php #База данных #codeigniter

Вопрос:

Вот код:

 public function get_id_model($email){
    $this->db->select('user_id');
    $this->db->where('email', $email);
    $query = $this->db->get('users');
    return $query->result();
}
  

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

Database.php

 $db['remote']['hostname'] = 'xxx.000webhost.com';
$db['remote']['username'] = 'xxx';
$db['remote']['password'] = 'xxx';
$db['remote']['database'] = 'xxx';
$db['remote']['dbdriver'] = 'mysql';
$db['remote']['dbprefix'] = '';
$db['remote']['pconnect'] = TRUE;
$db['remote']['db_debug'] = TRUE;
$db['remote']['cache_on'] = FALSE;
$db['remote']['cachedir'] = '';
$db['remote']['char_set'] = 'utf8';
$db['remote']['dbcollat'] = 'utf8_general_ci';
$db['remote']['swap_pre'] = '';
$db['remote']['autoinit'] = TRUE;
$db['remote']['stricton'] = FALSE;
  

В Autoload.php

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

Я что-нибудь пропустил?

Комментарии:

1. Здесь вы используете старый mysql_ API базы $db['remote']['dbdriver'] = 'mysql'; данных, если ваш хостинг использует PHP7, он не существует. Или, может 000webhost быть mysql_ , отключил расширение?

2. Я отредактировал ваш вопрос, указав то, что казалось фактическими учетными данными для входа. Я настоятельно рекомендую вам изменить их сейчас, если это были фактические учетные данные.

3. просто измените его на mysqli

4. @JamesLalor или mysql для mysqli?

5. @IsmailRubad да, CI обработает все остальное.

Ответ №1:

Просто измените драйвер базы данных с mysql на mysqli. Вы делаете это в database.php файл в папке config.

Комментарии:

1. «Просто измените драйвер базы данных с mysql на mysqli». — Это требует более подробной информации. Они не могут просто изменить свой код с mysql на mysqli_ без соблюдения определенного синтаксиса.

2. @Fred-ii- на самом деле это вполне приемлемый ответ, CI будет обрабатывать различия с помощью собственных библиотек драйверов базы данных. На самом деле не нужно больше деталей.