2013-08-14 16 views
10

Sto cercando di sviluppare un'app Web che possa connettersi a quanti più database possibili su PHP. PDO (http://www.php.net/manual/en/book.pdo.php) sembra essere l'interfaccia giusta, ma sto riscontrando problemi nell'installare tutte le estensioni necessarie per tutti i diversi driver di database PDO di cui ho bisogno.Installazione PHP PDO su Windows (xampp)

Si prega di notare che io uso xampp su una macchina Windows 7. Versione PHP 5.3.8. I driver PDO abilitati mysql, odbc, sqlite, sqlite2, sqlsrv.

Ho collegato con successo con il seguente:

.210

ho avuto fortuna di installare o collegare con:

  • (VEDI RISOLTO SOTTO GLI AGGIORNAMENTI) Sybase (ho provato ad usare e installare PDO_DBLIB [MS SQL Server (DOP)], ma senza fortuna)
  • (SOLVED VEDI AGGIORNAMENTI SUCCESSIVI) Oracle (Ho provato ad abilitare l'estensione = php_pdo_oci.dll in php.ini con la DLL che è stata installata con xampp dopo aver riavviato Apache il server non è riuscito ad avviarsi. Stava cercando di usare PDO_OCI [Oracle (DOP)])

so di poter ovviare a quei 2 con l'utilizzo dei driver specifici di database, ma mi piacerebbe molto usare DOP per tutto quello che mi serve.

Qualcuno sa come installare e attivare PDO_DBLIB e PDO_OCI driver o di una macchina Windows, o in qualsiasi altro modo di collegamento con i database Sybase e Oracle utilizzando DOP?


UPDATE

Basta con successo collegato con Oracle con PDO_OCI. Quello che dovete fare è la seguente:

Scaricare e installare il corretto Oracle Instant Client sulla vostra macchina Windows per esempio instantclient_12_1 e aggiungere il suo percorso al PATH nel SISTEMA variabili ambientali. Nota Oracle supporta solo 2 versioni verso il basso, quindi seleziona correttamente la versione del tuo client . Fallo e riavvia il tuo Apache.Si noti che la stringa di connessione è molto diverso da qui è un esempio di quello che ho usato:

$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

appena collegato con Sybase anche con PDO_ODBC. Quello che ti serve è il seguente:

Deve avere Sybase ASE Driver ODBC fornito con l'SDK. Seguito troverete la stringa di connessione utilizzata:

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

Posso chiedere * perché * vuoi collegarti al maggior numero possibile di database diversi? –

+0

certo, sto cercando di raccogliere informazioni da diversi sistemi per essere visualizzati in un unico posto. un po 'come un portale per monitorare le tabelle degli errori e alcune statistiche. – Constantinos

+0

Aggiornato il mio post con la soluzione per la connessione con oracle e PDO_OCI. Se qualcuno ha anche una soluzione per la sybase, faccelo sapere – Constantinos

risposta

3

Così sono finalmente riuscito a connettersi a quattro banca dati ecco come sono riuscito:


MySQL utilizzando pdo_mysql estensione sembrava essere installato su xampp di default non doveva fare molto lavoro. Ecco il codice che ho usato per la connessione:

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

Microsoft SQL Server utilizzandoPDO_SQLSRV seguito le istruzioni sul http://craigballinger.com/blog/2011/08/usin-php-5-3-with-mssql-pdo-on-windows/. Ecco il codice che ho usato:

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

Oracle con PDO_OCI. Scarica e installa il client Oracle Instant appropriato sul tuo computer Windows, ad esempio instantclient_12_1 e aggiungi il suo percorso a PATH in SYSTEM Environmental Variables. Nota Oracle supporta solo 2 versioni in basso, quindi seleziona correttamente la versione del tuo client. Fallo e riavvia il tuo Apache. Ecco il codice che ho usato:

$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 con PDO_ODBC Deve avere driver Sybase ASE ODBC che viene fornito con l'SDK. Ecco il codice che ho usato:

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