0

codeigniterでdb2データベース用のadodbローダーを作成するのを手伝ってくれる人はいますか。いくつかのライブラリを使用しようとしましたが、それは oracle データベースで機能しますが、新しい codeigniter アプリケーションを IBM DB2 に接続するのに混乱しています。これは oracle 用の adodbloader です。

    <?php if (!defined('BASEPATH')) exit('スクリプトへの直接アクセスは許可されていません');

    クラス Adodbloader{
        関数 Adodbloader(){
            if ( !class_exists('ADONewConnection') )
                require_once(BASEPATH.'/system/libraries/adodb/adodb.inc.php');

            $obj =& get_instance();
            $this->_init_adodb_library($obj);
        }

        関数 _init_adodb_library(&$ci) {
            $db_var = false;
            $debug = false;

            if (!isset($dsn)) {
                // CI データベース ファイルの使用にフォールバックします
                include(APPPATH.'config/database'.EXT);
                $group = 'デフォルト';
                $dsn = 'oci8://my_dbusername:my_dbpassword@my_dbhostname/my_oracledb';
            }

            // $ci は参照によるものであり、グローバル インスタンスを参照します
            $ci->adodb =& ADONewConnection($dsn);

            もし ($db_var) {
                // 通常の CI db 変数も設定します
                $ci->db =& $ci->adodb;
            }

            if ($debug) {
                $ci->adodb->debug = true;
            }
        }
    }
    ?>

db2 の adodb での手動接続は次のようになります。

    include('adodb/adodb.inc.php');
    $dbms = 'odbc_db2';
    $db =& ADONewConnection($dbms);
    $dsn = "driver={IBM db2 odbc DRIVER};Database=MY_DBNAME;hostname=MY_DBHOST;port=50000;protocol=TCPIP;"."uid=MYDBUSERNAME; pwd=MY_DBPASSWORD";
    $db->Connect($dsn);

私の質問は、手動の adodb db2 接続を使用して codeigniter と統合し、すべてのアプリケーション モデルで変数 $db を使用できるようにする方法です。私の問題について解決策を教えてくれたみんなに感謝します;)

4

1 に答える 1

0

私もこれをやろうとしていましたが、CI ドキュメントから、データベース クラスをオーバーライド、拡張、または置換できないようです。

このページを参照してください: http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html

コードをステップ実行すると、/system/database/DB.php に多くのハードコードされたパスとクラス名があるように見えます。

しかし、私は間違っていることが証明されたいと思っています。

于 2013-05-07T16:00:20.773 に答える