2013-08-14 85 views
10

PHP'de olabildiğince çok farklı veritabanına bağlanabilen bir web uygulaması geliştirmeye çalışıyorum. PDO (http://www.php.net/manual/en/book.pdo.php) bunun için doğru bir arayüz gibi görünüyor ama ihtiyacım olan tüm farklı PDO veritabanı sürücüleri için gerekli tüm uzantıları yüklemekte sorun yaşıyorum.PHP Windows üzerinde PDO yüklemesi (xampp)

Windows 7 makinesinde xampp kullandığımı lütfen unutmayın. PHP Sürüm 5.3.8. PDO sürücüleri mysql, odbc, sqlite, sqlite2, sqlsrv'yi etkinleştirdi.

başarıyla aşağıdaki şekilde bağlandınız:

.210

yüklerken veya bağlantı hiç şans vardı:

  • Sybase (GÜNCELLEME AŞAĞIDA ÇÖZÜLDÜ GDA) (kullandığım ve yüklemeye çalıştı PDO_DBLIB [MS SQL Server (PDO)] ama hiç şansım)
  • (GÜNCELLEME AŞAĞIDA ÇÖZÜLDÜ GDA) Oracle(Apache sunucu başlatılamadı yeniden başlattıktan sonra xampp ile yüklenen dll ile php.ini içinde uzantısı = php_pdo_oci.dll etkinleştirmek için çalıştı. kullanmaya çalışıyordu Pdo_Oci [Oracle (PDO)])

ben veritabanı belirli sürücüleri kullanarak olanlar 2'ye çalışabilirsiniz biliyorum ama gerçekten ihtiyacım her şey için PDO kullanılabilir isteriz.

herkes yükleyebilir ve PDO_DBLIB ve Pdo_Oci sürücüleri veya bir windows makinesi veya PDO kullanarak Sybase ve Oracle veritabanları ile bağlantı başka bir şekilde etkinleştirmek için biliyor mu?


Hemen başarıyla Pdo_Oci ile kahin ile bağlı

GÜNCELLEME.

İndirme ve Çevresel Değişkenler örnek instantclient_12_1 için windows makinede düzgün Oracle Instant Client kurup SİSTEMİ PATH giden yolunu ekleyin: Ne yapmak gerekir şudur. Not Oracle, yalnızca 2 sürümü desteklediğinden, istemci sürümünüzü seçin. Bunu yapın ve Apache'nizi yeniden başlatın.

$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); 

GÜNCELLEME

Sadece Sybase yanı ile PDO_ODBC ile bağlı: bağlantı dizesi burada çok farklı olduğunu unutmayın ben eskiden ne bir örneğidir. İhtiyacınız olan şey:

SDK ile birlikte gelen Sybase ASE ODBC Sürücüsü olmalıdır. kullanılan bağlantı dizesi aşağıda bul:

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

Neden * neden * olabildiğince çok farklı veritabanına bağlanmak istersiniz? –

+0

emin, farklı sistemlerden bilgi toplamaya çalışıyorum tek bir yere. hata tablolarını ve bazı istatistikleri izlemek için bir portal gibi. – Constantinos

+0

Son gönderim oracle ve PDO_OCI ile bağlantı çözümü ile güncellendi. Eğer herhangi biri de sybase için bir çözüme sahipse, lütfen – Constantinos

cevap

3

Yani ben nihayet dört veritabanına bağlanmak için yönetilen burada yönetilen nasıl: PDO_MYSQL kullanarak


MySQL uzatma yüklü gibiydi xampp varsayılan olarak fazla iş yapmak zorunda kalmadı.http://craigballinger.com/blog/2011/08/usin-php-5-3-with-mssql-pdo-on-windows/ talimatları takip PDO_SQLSRV kullanılarak

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

Microsoft SQL Server: İşte bağlantısı için kullanılan koddur.

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

Oracle ile Pdo_Oci: İşte kullanılan koddur. Windows makinenizde uygun Oracle Instant Client uygulamasını indirin ve yükleyin, örneğin instantclient_12_1 ve SYSTEM Environmental Variables içinde PATH yolunu ekleyin. Not Oracle yalnızca 2 sürümü desteklediğinden istemci sürümünüzü doğru şekilde seçin. Bunu yapın ve Apache'nizi yeniden başlatın.

$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 SDK ile birlikte gelen Sybase ASE ODBC sürücüsü olmalıdır PDO_ODBC ile: İşte kullanılan koddur. İşte kullandığım kod:

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