2012-04-02 12 views
0

私はPDOライブラリを新しくしているので、私は未経験で謝罪します。 PDOライブラリを使用してクエリを構築して実行し、結果が何であっても返すクラスを作成しています。MySQL PDOを使用してデータベース名を検出するには

クラス内では、データベースへのオープンな接続があるかどうかを検出し、設定されているものと同じであれば、代わりにこの接続を使用します。これはPDO::getAttribute()関数が返す「CurrentDatabase」と「SQLSERVERNAME」としてのMSSQLライブラリを使用して行うことは非常に簡単ですので、私はちょうどそうのような条件を適用することができます。

しかし
if(!empty($this->PDO)){ 
    // Get the current connection information 
    $current_connection = $this->PDO->getAttribute(PDO::ATTR_SERVER_INFO); 
    // Return if the connection is the same 
    if($this->connection_parameters['hostname']==$current_connection['SQLServerName']&&$this->connection_parameters['database']==$current_connection['CurrentDatabase']){ 
     return; 
    } 
} 

、それは、MySQL、データに来るときPDO::getAttributeから返されたものとはまったく異なり、現在の接続からデータベース名を取得できないようです。

PDOライブラリPHPを使用して、現在接続されているMySQL接続データベースを取得する機能や方法を知っていますか?特に - - 現在のデータベースをチェックして

答えて

1

MySQLとMsSQLの両方に接続するには、2つの接続が必要です。ただし、ライブ接続でデータベースを変更することは非常に簡単です。

以下は、PDOインスタンスがすでに存在するかどうか、および必要なデータベースを使用しているかどうかを確認するだけです。そうであれば、この接続を継続し、そうでなければデータベースを変更します。

-1

は、私が開いた接続を探してではポイントを見ていない「USE database

+0

回答ありがとうございますが、私はクエリを使用せずに行うことをお勧めします。このメソッドを最後の手段として使用します –

1

のためのMySQLのマニュアルページのコメントを参照してください。

接続を開いてデータベースを選択してから、いつでもこの接続をクラス全体で使用できますか?

+1

2つの異なるサーバーを使用する1つのスクリプトで2つのクエリを実行する場合、2つの接続が必要です。 –

+0

さて、クラスのインスタンスが2つありますが、何が問題なのですか?別のサーバーが必要になるたびに再接続するつもりはありませんか? –

+0

もちろん、2つの別々の接続のクラスの2つのインスタンスがあります!ただし、クラスのインスタンスを開始するときは、データベースパラメータを入力する必要があるため、PDOではやや混乱します。私はあなたが新しいインスタンスを作成せずにデータベースを変更できないと考えました!それを指摘していただきありがとうございます、これは明らかにソリューションです。 –

関連する問題