2013-08-14 36 views
10

Próbuję stworzyć aplikację internetową, która może łączyć się z tak wieloma różnymi bazami danych, jak to tylko możliwe w PHP. PDO (http://www.php.net/manual/en/book.pdo.php) wydaje się być właściwym interfejsem, ale mam problem z instalacją wszystkich potrzebnych wersji dla wszystkich różnych sterowników baz danych PDO, których potrzebuję.Instalacja PDO PHP na Windows (xampp)

Należy pamiętać, że używam xampp na maszynie z systemem Windows 7. Wersja PHP 5.3.8. Sterowniki PDO obsługują mysql, odbc, sqlite, sqlite2, sqlsrv.

I pomyślnie połączony z następujących czynności:

nie miałem szczęścia instalacją lub podłączeniem z:

  • (SOLVED patrz poniżej aktualizacji) Sybase (próbowałem w obsłudze i instalacji PDO_DBLIB [MS SQL Server (ChNP)], ale bez powodzenia)
  • (ROZWIĄZYWANIE ZOBACZ PONIŻSZE AKTUALIZACJE) Oracle (Próbowałem włączyć rozszerzenie = php_pdo_oci.dll w php.ini przy użyciu biblioteki dll, która została zainstalowana z xampp po ponownym uruchomieniu serwera Apache, którego uruchomienie nie powiodło się. Próbował użyć pdo_oci [Oracle (ChNP)])

wiem, że mogę obejść tych 2 z użyciem specyficznych sterowników baz danych, ale naprawdę chciałbym użyć PDO za wszystko, co mi potrzeba.

Czy ktoś wie jak zainstalować i włączyć PDO_DBLIB i pdo_oci sterowniki lub Windows maszynę, lub dowolny inny sposób łączenia się z bazami danych Oracle i Sybase wykorzystaniem PDO?


UPDATE

Tylko pomyślnie połączony z wyroczni z pdo_oci. Co trzeba zrobić, jest następujący:

pobrania i zainstalowania odpowiedniego Oracle Instant Client na komputerze z systemem Windows za przykład instantclient_12_1 i dodać ścieżkę do PATH w SYSTEMIE zmiennych środowiskowych. Uwaga: Oracle obsługuje tylko 2 wersje, więc wybierz odpowiednio wersję klienta. Zrób to, a następnie uruchom ponownie Apache.Zauważ, że ciąg połączenia jest bardzo różni się od oto próbka tego, co kiedyś:

$tns = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ".$myServer.")(PORT = 1521)))(CONNECT_DATA=(SID=".$myDB.")))"; 
$connStr = "oci:dbname=".$tns;  
$conn = new PDO($connStr,$myUser,$myPass); 

UPDATE

Wystarczy połączony z Sybase oraz z PDO_ODBC. To, czego potrzebujesz, to:

Musi mieć sterownik ODBC Sybase ASE, który jest dostarczany z SDK. Poniżej ciąg połączenia używany:

$connStr = "odbc:Driver={Adaptive Server Enterprise};server=".$myServer.";port=".$myPort.";db=".$myDB; 
$conn = new PDO($connStr,$myUser,$myPass); 
+0

Czy mogę zapytać * dlaczego * chcesz połączyć się z tylu różnych baz danych, ile to możliwe? –

+0

z pewnością próbuję zebrać informacje z różnych systemów, które będą wyświetlane w jednym miejscu. coś w rodzaju portalu do monitorowania tabel błędów i niektórych statystyk. – Constantinos

+0

Zaktualizowałam mój post za pomocą rozwiązania do połączenia z Oracle i PDO_OCI. Jeśli ktokolwiek ma rozwiązanie dla sybase, proszę daj nam znać – Constantinos

Odpowiedz

3

Więc udało mi się podłączyć do czterech bazie oto jak udało mi:


MySQL użyciu pdo_mysql przedłużenie zdawała się być zainstalowany na xampp domyślnie nie musiał dużo pracować. Oto kod użyłem do podłączenia:

$connStr = "mysql:host=".$myServer.";dbname=".$myDB; 
$conn = new PDO($connStr,$myUser,$myPass); 

Microsoft SQL Server użyciu PDO_SQLSRV postępujesz zgodnie z instrukcjami na http://craigballinger.com/blog/2011/08/usin-php-5-3-with-mssql-pdo-on-windows/. Oto kod użyłem:

$connStr = "sqlsrv:Server=".$myServer.";Database=".$myDB; 
$conn = new PDO($connStr,$myUser,$myPass); 

Oracle z pdo_oci. Pobierz i zainstaluj odpowiedniego klienta Oracle Instant na komputerze z systemem Windows, na przykład instantclient_12_1 i dodaj jego ścieżkę do zmiennej PATH w SYSTEM Environmental Variables. Uwaga: Oracle obsługuje tylko 2 wersje, więc wybierz wersję swojego klienta poprawnie. Zrób to, a następnie uruchom ponownie Apache. Oto kod użyłem:

$tns = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ".$myServer.")(PORT = 1521)))(CONNECT_DATA=(SID=".$myDB.")))"; 
$connStr = "oci:dbname=".$tns;  
$conn = new PDO($connStr,$myUser,$myPass); 

Sybase z PDO_ODBC Musi mieć Sybase ASE ODBC sterownik, który pochodzi z SDK. Oto kod, którego użyłem:

$connStr = "odbc:Driver={Adaptive Server Enterprise};server=".$myServer.";port=".$myPort.";db=".$myDB; 
$conn = new PDO($connStr,$myUser,$myPass);