Проблема с драйвером базы данных postgre в Code Igniter - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь запросить таблицу из базы данных postgreSQL на PHP с помощью инфраструктуры CodeIgniter 3.1.9. Проблема в том, что я получаю ошибку

A PHP Error was encountered
Severity: Notice

Message: Undefined property: CI_DB_postgre_driver::$db

Почему я получаю эту ошибку и как я могу ее исправить?

Что я сделал до сих пор. Я убедился, что использую правильный порт, в котором я нахожусь, я знаю, что 6090 не является портом по умолчанию, но это то, что использует моя база данных postgreSQL. Я предоставил все необходимое для подключения к postgreSQL в файле database.php. Я раскомментировал оба из файла php.ini:

extension = php_pgsql.dll

расширение = php_pdo_pgsql.dll

$db['database_2'] = array(
'dsn'   => '',
'hostname' => 'example01',
'username' => 'user',
'password' => 'pwrandom',
'database' => 'dbrandom',
'dbdriver' => 'postgre',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE,
'port' => '8060');

Вот выполненные операторы. Ошибка возникает при втором утверждении ...

$secondDB = $this->load->database('database_2', TRUE);
$secondDB->db->query("SELECT VERSION()")->row('version');

1 Ответ

0 голосов
/ 04 января 2019

Я не работаю с postgre, но ошибка исходит от ->row('version'). вы пытаетесь получить строку из запроса, но не называете ее правильно

попробуй так:

$secondDB = $this->load->database('database_2', TRUE);
$obj= $this->db->query('SELECT VERSION()');
echo'<pre>';print_r($obj->row()); die();

который выводит в моем случае: [VERSION()] => 5.6.12-log

Вы также можете посмотреть поближе и распечатать объект, чтобы увидеть, как он структурирован:

echo'<pre>';print_r($obj); die();

в моем случае (mysqli) объект выглядит так:

CI_DB_mysqli_result Object
(
    [conn_id] => mysqli Object
        (
            [affected_rows] => 1
            [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 $
            [client_version] => 50011
            //some more 
            [server_info] => 5.6.12-log
            //some more
         )
)

Теперь вы меняете ->row('version') в соответствии с этой структурой:

В моем примере я бы использовал: echo $obj->conn_id->server_info;die;

который выводит сейчас: 5.6.12-log

больше в документации: Создание результатов запроса: строки результатов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...