1

LinuxボックスのユーザーDSNに接続できます(ODBCを使用)。

コードイグナイターを使用して接続するにはどうすればよいですか?

私のdatabase.phpには、デフォルトのデータベースがあります。

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'user';
$db['default']['password'] = 'pass';
$db['default']['database'] = 'db_main';
$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;

ただし、ODBCを使用して別のデータベースに同時に接続する必要もあります。

だから私は私のコントローラーに持っています:

public function index()
    { 

         $dsn = 'NZSQL://someuser:password@host/somedatabase';
         $this->load->database($dsn);
         $this->db->query("SELECT * FROM Cust Limit 10");
         $result = $this->db->result();
    }

エラーが発生します:

データベースエラーが発生しました

エラー番号:1146

テーブル'db_main.Cust'は存在しません

SELECT * FROM Cust Limit 10

ファイル名:/var/www/controllers/netezzatest.php

行番号:28

4

2 に答える 2

3

接続しているDBごとに、CodeIgniterは新しいデータベースオブジェクトを構築するように要求します。$ this-> load-> database()を呼び出すときは、構成ファイルで各DBを完全に構築し、名前(配列キー)でそれらを参照する必要があります。

詳細については、複数のデータベースへの接続を参照してください。ただし、基本的には、これを使用して接続する必要があります(DBごとにオブジェクトを作成します)。

$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);

次に、これでそれぞれに対してクエリを実行します。

$DB1->query();
$DB1->result();

と:

$DB2->query();
$DB2->result();
于 2011-08-04T20:16:25.340 に答える
2

2番目のデータベースに接続するときは、オブジェクトを返して使用できるようにする必要があります。true2番目のパラメーターとして渡すとload->database、dbオブジェクトが返されます。

$dsn = 'NZSQL://someuser:password@host/somedatabase';
$dsnDB = $this->load->database($dsn, TRUE);
$query = $dsnDB->query("SELECT * FROM Cust Limit 10");
$result = $query>result();

この場合、$this->dbはmysql DBであり$dsnDB、もう1つです。

于 2011-08-04T20:20:22.387 に答える