2012-12-26 5 views
7

Potrzebuję uzyskać zasoby połączenia z już istniejącego obiektu PDO. Na przykład:Jak zdobyć zasoby połączenia z obiektu PDO?

... 
$oPDO = new PDO($sOdbcDsn); 
$rOdbcConnection = $oPDO -> getConnection(); 
odbc_prepare($rOdbcConnection, $sQuery); 
... 

Również odwrotnie, chciałbym przekazać istniejącego połączenia do konstruktora PDO. Chcę mieć możliwość pracy z obiektami PDO i bezpośrednimi połączeniami osobno.

Czy istnieje sposób na wyodrębnienie połączenia z PDO?

+1

Dlaczego chcesz odbijać się między ChNP a przestarzałym mechanizmem zapytań? PDO może obsłużyć wszystko, czego potrzebujesz, jednocześnie zapewniając dodatkowe papiery wartościowe. –

+1

Nie jestem pewien, czy to robi różnicę, to RDBMS zarządza pulą połączeń wewnętrznie i przypisuje identyfikatory połączeń. Przekazywanie obiektu połączenia prawdopodobnie nie przekazuje powiązanego połączenia z RDBMS. – Sebas

+1

Brad, PDO nie wie od dawna naprawionego błędu w polach danych BLOB, a mój backend DB oparty na PDO nie może obsłużyć tych zapytań BLOBa. Więc muszę zrobić obejście. – alkaponey

Odpowiedz

2

Myślę, masz dwie możliwości:

  1. owinąć połączenia PDO (i metod) w klasie, który można przekazać wokół jak chcesz. Zdefiniuj konstruktor kopii, który ponownie użyje uchwytu połączenia.

  2. wykopiuj źródło do obiektu PDO ze źródła PHP i zbuduj tam to, czego potrzebujesz.