1

プログラムの一部のデータベース設定を変更したいと考えています。

私のセットアップでは、データベースクラスは次のような構成で自動ロードされます

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '****';
$db['default']['database'] = 'database';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

スクリプトの一部で の値を変更したいのですが$db['default']['keyname']、どうすればよいですか?

4

4 に答える 4

2

既存の資格情報を動的に変更するのではなく、別の資格情報のセットを追加する必要があります。

$db['another_db']['hostname'] = 'localhost';
$db['another_db']['username'] = 'root';
$db['another_db']['password'] = '****';
$db['another_db']['database'] = 'database';
$db['another_db']['dbdriver'] = 'mysql';
$db['another_db']['dbprefix'] = '';
$db['another_db']['pconnect'] = TRUE;
$db['another_db']['db_debug'] = TRUE;
$db['another_db']['cache_on'] = FALSE;
$db['another_db']['cachedir'] = '';
$db['another_db']['char_set'] = 'utf8';
$db['another_db']['dbcollat'] = 'utf8_general_ci';
$db['another_db']['swap_pre'] = '';
$db['another_db']['autoinit'] = TRUE;
$db['another_db']['stricton'] = FALSE;

次のようにして、この他のデータベースをロードできます。

$another_db = $this->load->database('another_db', TRUE);

次に、通常のデータベース ドライバーのように使用します。

$another_db->select();
...etc
于 2012-10-24T15:09:13.047 に答える
2

クラスの方法があります>それをチェックしてください http://codeigniter.com/user_guide/libraries/config.html

どのようにデータベース接続設定を変更することはできません....それらは設定よりもずっと前にロードされます..

于 2012-10-24T11:30:33.493 に答える
0

少しハックですが、次のようなものを system/database/DB_driver.php に追加できます (例として db password change を使用しました):-

public function update_pw($value) {
  $this->password = $value;
}

次に、プロジェクトで、

$this->db->update_pw('example');
$this->db->reconnect();

構成で具体的に何を変更したいかによって、さらに重要なことに、なぜそれを変更したいのかによって、これが最適なオプションである場合とそうでない場合があります。

于 2012-10-24T11:56:05.723 に答える
0

また、いつでもグローバル変数を使用できます。通常、私は常に 2 つのデータベースを用意しています。1 つは本番用、もう 1 つは開発用です。その変数をチェックして、どちらか一方をロードするだけです。

この概念を使用して、アプリケーションの一部に 1 つのデータベースをロードし、別の部分に別のデータベースをロードできます。ただし、ブレンダンが指摘したように、組み込みのソリューションを使用します。

于 2012-10-26T14:31:38.217 に答える