Codeigniterで異なるデータベースを使用する
Codeigniterで2つのコンテンツがあって、それぞれ別のデータベースを使用したかった。調べてみると以下方法で対応できた。
■事前設定
「codeigniter/config/database.php」に新たにデータベース情報を追記する。
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'MySQLのユーザー名', 'password' => 'MySQLのパスワード', 'database' => '使用するデータベース名', 'dbdriver' => 'mysqli', '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 ); //↓↓を追記する $db['db2'] = array( //キーをdefaultとは違うものにする 'dsn' => '', 'hostname' => 'localhost', 'username' => 'MySQLのユーザー名', 'password' => 'MySQLのパスワード', 'database' => '使用するデータベース名', 'dbdriver' => 'mysqli', '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 );
■使用方法
モデル側でデータベースを読み込む際に、引数を入れる。
function __construct() { parent::__construct(); $this->load->database('db2'); }
引数は先ほど設定した配列のキーを入れる。
■その他
特に問題なくいけたけど、1つのコンテンツで複数のデータベースを使う時とかはもしかすると面倒なのかも。
関連記事
-
-
CRUDのfunction化(処理ページ)
<?php //エスケープ用htmlspecialchars functi ...
-
-
PHPで数字のプラスとマイナスを反転させる
gmp_neg http://php.net/manual/ja/functio ...
-
-
PHPでディレクトリの作成と削除
PHPでユーザID毎にディレクトリを作成しその中にキャッシュファイルを格納したか ...
-
-
登録画像orノーイメージ画像の振り分け表示
<? /* 画像が登録されていれば当該画像を読み出し、 登録されていない場 ...
-
-
composerでライブラリのインストールとインストール時のエラー
composerでライブラリをインストールする際に「The following ...
-
-
PHPでソーシャル(SNS)ログインする方法
「facebook / twitter / Googleアカウントでログインする ...
-
-
PHPの条件式でまとめて評価
PHPのソースで、 if( !($hoge || $fuga || $foo) ...
-
-
file_get_contentsを使用する際にタイムアウト設定
20秒に1回自動でリロードするページにて file_get_contentsを使 ...
-
-
PHPでサイトマップを動的に生成する
WordPress等のCMSは使っておらず、自動更新するサイトがあり、そのサイト ...
-
-
PHPで文字列の操作(検索、置換、切り出し)
しばしば行う文字列の操作をまとめておく。 ----- ■文字列の長さを調べる e ...