5

CodeIgniter といくつかの Mysql データベースがあります。しかし、別のデータベースを機能するように設定したいのですが、いくつかのアクションを実行した後、それを無効にします。たとえば、関数 make_some_actions_with_db() があり、次のようなものが必要です。

public function action()
{
//load db
make_some_actions_with_db();
//disable db
}

したがって、新しいデフォルト データベースを設定する方法と、別の (最初の) データベースを設定する方法を知る必要があります。ありがとうございました。

更新: 動作しません:

   public function update_record_insert_test()
    {
        if ($this->facebook->getUser())
        {
            $another_db_settings['hostname'] = 'localhost';
            $another_db_settings['username'] = 'root';
            $another_db_settings['password'] = '';
            $another_db_settings['database'] = 'name';
            $another_db_settings['dbdriver'] = "mysql";
            $another_db_settings['dbprefix'] = "";
            $another_db_settings['pconnect'] = TRUE;
            $another_db_settings['db_debug'] = TRUE;
            $another_db_settings['cache_on'] = FALSE;
            $another_db_settings['cachedir'] = "";
            $another_db_settings['char_set'] = "utf8";
            $another_db_settings['dbcollat'] = "utf8_general_ci";
            $this->load->database($another_db_settings);

            $_POST['id']='AccountPagesView.a_book/1000';
            $_POST['value']='test';
            $_POST['old_value']='not';
            $welcome=new Welcome();
            $welcome->update_record();
        }
        else
        {
            $url=$this->facebook->getLoginUrl(array('next' => base_url().'update_record_insert_test'));
            redirect($url);
        }
    }
4

2 に答える 2

10

あなたconfig/database.phpのデータベースでは、次のように「デフォルト」グループに設定されています。

$db['default']['hostname'] = 'host';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'database';

これにより、次のように他のグループを指定できます。

$db['second']['hostname'] = 'host';
$db['second']['username'] = 'username';
$db['second']['password'] = 'password';
$db['second']['database'] = 'database';

$db['third']['hostname'] = 'host';
$db['third']['username'] = 'username';
$db['third']['password'] = 'password';
$db['third']['database'] = 'database';

その後、次を使用して別のデータベースに接続できます。

$defaultDB = $this->load->database('default', TRUE);
$secondDB = $this->load->database('second', TRUE);

true2 番目の値として渡すことにより、データベース オブジェクトが返され、次のように各データベースに対して同じメソッドを安全に使用できるようになります。

$default->get('table');
$second->get('different_table');
于 2012-06-27T13:49:27.413 に答える
0

デフォルトのデータベース接続を変更したい場合 (これはお勧めしません)、次のようにします。

$another_db_settings['hostname'] = '';
$another_db_settings['username'] = '';
$another_db_settings['password'] = '';
$another_db_settings['database'] = '';
$another_db_settings['dbdriver'] = "mysql";
$another_db_settings['dbprefix'] = "";
$another_db_settings['pconnect'] = TRUE;
$another_db_settings['db_debug'] = TRUE;
$another_db_settings['cache_on'] = FALSE;
$another_db_settings['cachedir'] = "";
$another_db_settings['char_set'] = "utf8";
$another_db_settings['dbcollat'] = "utf8_general_ci";
$this->load->database($another_db_settings);

その後、$this->db 経由で新しいデータベースにアクセスできますが、cchana が提案したことを実行し、新しい接続を別の変数に割り当てることをお勧めします。

$new_db = $this->load->database($another_db_settings, TRUE);
于 2012-06-27T13:52:34.013 に答える