codeigniter でアプリケーションを開発しました。アプリケーションにフォーラムのようなセクションがありました。そのために、そのコントローラーに別のデータベースを作成したいと思います。
そのため、サイトとデータベースを非常に簡単に維持できます。私の質問は、単一のコントローラーにデータベースを割り当てるために codeigniter で可能ですか?
ありがとう
codeigniter でアプリケーションを開発しました。アプリケーションにフォーラムのようなセクションがありました。そのために、そのコントローラーに別のデータベースを作成したいと思います。
そのため、サイトとデータベースを非常に簡単に維持できます。私の質問は、単一のコントローラーにデータベースを割り当てるために codeigniter で可能ですか?
ありがとう
データベース接続をコンストラクターに渡すことができます。
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$this->load->database($config);
manix の回答で述べたように、設定をデータベース ライブラリ コンストラクターに渡すことができます。
ただし、見逃していたのはtrue
、2 番目のパラメーターとして指定し、出力を変数に取り込む必要があることです。
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
そうしないと、新しいデータベースを開くのではなく、データベース接続を置き換えるため、一度に 1 つのデータベースしか操作できないことを意味します。
group_one
文字列を渡していることに注意してくださいgroup_two
。これらはデータベース設定グループです (構成ファイルには、通常、default
グループのみがあります)。
グループ名を構成オプションの配列に置き換えることができますが、グループを使用することをお勧めします!
その後、クエリを次のように実行できます
//query against first database
$DB1->select(...
//query against second database
$DB2->select(...
$DB2->close();
またはを使用して、接続の1つを閉じることができます$DB1->close();
詳細については、ユーザーガイドをご覧ください
copy and paste at database.php
//Another database connection.
$db['database2']['hostname'] = 'localhost';
$db['database2']['username'] = 'root';
$db['database2']['password'] = '';
$db['database2']['database'] = 'dbname2';
$db['database2']['dbdriver'] = 'mysql';
$db['database2']['dbprefix'] = '';
$db['database2']['pconnect'] = FALSE;
$db['database2']['db_debug'] = TRUE;
$db['database2']['cache_on'] = FALSE;
$db['database2']['cachedir'] = '';
$db['database2']['char_set'] = 'utf8';
$db['database2']['dbcollat'] = 'utf8_general_ci';
$db['database2']['swap_pre'] = '';
$db['database2']['autoinit'] = TRUE;
$db['database2']['stricton'] = FALSE;
//how to use the second database which is configured
$CI= &get_instance();
//set the second parameter to TRUE.
$this->db2 = $CI->load->database('database2', TRUE);
$qry= $this->db2->query("SELECT * FROM db2tables");
var_dump($qry->result());
詳細については、以下のリンクを参照してください http://quandaflow.com/two-databases-connections-codeigniter/