2

PHP 5.3/ADODB5/SQL Server 2008 を使用して、同じサーバー上の 2 つのスキーマへの接続を開くことはできますか? これが私が試していることです:

//  Connect to users database
$connUsers = NewADOConnection('mssql');
$connUsers-> Connect($server, $user, $password, $dbNameUsers);
$connUsers->SetFetchMode(ADODB_FETCH_ASSOC);    

//  Connect to main database    
$conn = NewADOConnection('mssql');
$conn-> Connect($server, $user, $password, $dbNameMain);
$conn->SetFetchMode(ADODB_FETCH_ASSOC); 

いずれかが単独で機能しますが、両方が同時に開いていると、クエリは失敗します。データベース名以外はすべて同じであることに注意してください。

私が見たいくつかの場所は、次のように、2 番目の接続文字列でサーバー名を省略できると述べています。

$conn-> Connect(false, $user, $password, $dbNameMain);

しかし、これによりエラーが発生しました ($conn に対して開かれたレコードセットは有効なオブジェクトではありません)。

必要に応じてさまざまな接続を開いたり閉じたりできますが、保守性のために、すべての接続をスクリプトの上部に設定してから、下部ですべて閉じたいと思います。

助けてくれてありがとう。

4

2 に答える 2

1

これは、adoDB を使用して 3 つのデータベースに接続できるようにするために作成した簡単なクラスです。

class Data {
    private static $_dbOne = null;
    private static $_dbTwo = null;
    private static $_dbThree = null;

    protected function __construct() {
    }

    /**
     * This function returns the database connection object
     * @return Object Database Connection
     */
    public static function dbOne() {
        include_once(LIBRARY_PATH.'adodb5/adodb.inc.php');
        if (null === self::$_dbOne) {


            $_connOne = 'mysql://username:password@www.server.com/database';

            self::$_dbOne = &ADONewConnection($_connOne);
            if (self::$_dbOne==false) { die('Could not connect to the database.'); }

        }

        return self::$_dbOne;
    }

    /**
     * This function returns the database connection object
     * @return Object Database Connection
     */
    public static function dbTwo() {
        include_once(LIBRARY_PATH.'adodb5/adodb.inc.php');
        if (null === self::$_dbTwo) {


            $_connTwo = 'mysql://username:password@www.server.com/database';

            self::$_dbTwo = &ADONewConnection($_connTwo);
            if (self::$_dbTwo==false) { die('Could not connect to the database.'); }

        }

        return self::$_dbTwo;
    }

}

    /**
     * This function returns the database connection object
     * @return Object Database Connection
     */
    public static function dbThree() {
        include_once(LIBRARY_PATH.'adodb5/adodb.inc.php');
        if (null === self::$_dbThree) {


            $_connThree = 'mysql://username:password@www.server.com/database';

            self::$_dbThree = &ADONewConnection($_connThree);
            if (self::$_dbThree==false) { die('Could not connect to the database.'); }

        }

        return self::$_dbThree;
    }

}

このクラスの使用例を次に示します。

$sql = "SELECT * FROM *";
$results1 = Data::dbOne()->Execute($sql);
$results2 = Data::dbTwo()->Execute($sql);
$results3 = Data::dbThree()->Execute($sql);
于 2013-04-04T17:08:31.457 に答える
0

私はこれを見つけましたhttp://phplens.com/lens/adodb/docs-adodb.htm#ex6 (参照によってAdoConnectionを初期化しています)。それが役立つことを願っています。

于 2013-03-27T22:44:39.737 に答える