Переключение баз данных в коде воспламенителя - PullRequest
1 голос
/ 11 июля 2011

У меня есть две базы данных, к которым мне нужно подключиться, что я могу сделать в контроллерах и библиотеках, которые я написал. По какой-то странной причине (я предполагаю, что я здесь упускаю что-то простое), я не могу заставить его работать в модели внезапно. Я прочитал класс базы данных в руководстве пользователя CI.

Я пытался сделать ссылку на $ pew при загрузке pew ($ this-> pew = & $ this-> load-> database ('pew', TRUE)) безрезультатно.

Есть мысли, предложения? Спасибо!

Error

PHP Fatal error:  Call to a member function query() on a non-object in
/Sites/CI/nyan/application/models/pewpewmodel.php on line 15

Строка 15

$this->pew->query('SELECT * FROM ExtractEvent'); //simplified for testing

database.php

$active_group = 'nyan';
$active_record = TRUE;

$db['nyan']['hostname'] = 'catcatcat';
$db['nyan']['username'] = 'mew';
$db['nyan']['password'] = 'meow';
$db['nyan']['database'] = 'meow';
$db['nyan']['dbdriver'] = 'mysql';

$db['pew']['hostname'] = 'jujubees';
$db['pew']['username'] = 'qwop';
$db['pew']['password'] = 'qwop';
$db['pew']['database'] = 'nom';
$db['pew']['dbdriver'] = 'mssql';

Модель pewpewmodel.php

private $pew; 

function __construct()
{
    parent::__construct();
    $this->pew = $this->load->database('pew', TRUE);
}

function get_forms_by_date($id = NULL, $Year = NULL, $Month = NULL, $Day = NULL)
{
    $this->pew->query('SELECT * FROM ExtractEvent'); //simplified for testing
}

Контроллер nomnom.php

public function index()
{
    $this->load->model('pewmodel');
    $data['Forms'] = $this->pewmodel->get_forms_by_date($this->session->userdata('Username'), date('Y'), date('n'), date('j'));
    $this->load->view('common/header', $data['Forms']);
    $this->load->view('home/index');
    $this->load->view('common/footer');
}

Просмотр index.php

<code><pre>
<?php print_r($Forms); ?>

Ответы [ 3 ]

2 голосов
/ 07 января 2013

Это сработало для меня.

[из конструктора модели]

        $db['hostname'] = 'localhost';
        $db['username'] = 'root';
        $db['password'] = '';
        $db['database'] = 'my_database';
        $db['dbdriver'] = 'mysql';
        $db['dbprefix'] = '';
        $db['pconnect'] = TRUE;
        $db['db_debug'] = TRUE;
        $db['cache_on'] = FALSE;
        $db['cachedir'] = '';
        $db['char_set'] = 'latin1';
        $db['dbcollat'] = 'latin1_bin';
        $db['swap_pre'] = '';
        $db['autoinit'] = TRUE;
        $db['stricton'] = FALSE;

        $this->load->database($db, FALSE, TRUE);
        // False=don't return db object
        // True =use as active record, so it replaces default $this->db

Надеюсь, это поможет программистам искать в Google, как я.

1 голос
/ 11 июля 2011
$this->pew = $this->load->database('pew', TRUE);

Вы загружаете базу данных, которая не существует в вашей конфигурации базы данных.

0 голосов
/ 15 июля 2011

Я получил ошибку 500, когда передал TRUE для подключения, как показано ниже. Я предположил (да, я знаю), что у меня была такая же проблема с подключением. По правде говоря, это была ошибка ID10T с самого начала. Мне не хватало библиотеки mssql.so на моем локальном компьютере и другой, с которой я тестировал.

$this->pew =& $this->load->database('pew', TRUE)

Мои извинения за трату времени, мужская уборная.

...