我正在尝试开发一个Web应用程序,在PHP上可以连接尽可能多的不同数据库。PDO(http://www.php.net/manual/en/book.pdo.php)似乎是正确的接口,但我在安装我需要的所有不同PDO数据库驱动程序所需的所有扩展时遇到了麻烦。
请注意,我在Windows 7机器上使用xampp。 PHP版本5.3.8。 PDO驱动程序启用mysql、odbc、sqlite、sqlite2、sqlsrv。
我已成功连接以下内容:
- MySQL使用PDO_MYSQL [MySQL(PDO)](默认情况下似乎在xampp上安装了该扩展名)
- Microsoft SQL Server使用PDO_SQLSRV [MS SQL Server(PDO)](按照http://craigballinger.com/blog/2011/08/usin-php-5-3-with-mssql-pdo-on-windows/上的说明操作)
我没有成功安装或连接以下内容:
- (已解决,请参见下面更新)Sybase(我尝试使用和安装了PDO_DBLIB [MS SQL Server(PDO)],但没有成功)
- (已解决,请参见下面更新)Oracle(我尝试在php.ini中启用extension=php_pdo_oci.dll,并使用xampp安装的dll重启Apache服务器后,服务器无法启动。尝试使用PDO_OCI [Oracle(PDO)])
我知道我可以通过使用特定于数据库的驱动程序来解决这两个问题,但我真的很想使用所有需要的PDO。
有人知道如何在Windows机器上安装和启用PDO_DBLIB和PDO_OCI驱动程序,或者以任何其他方式使用PDO连接Sybase和Oracle数据库吗?
更新
刚刚成功地使用PDO_OCI连接了Oracle。你需要做到以下几点:
下载并安装Windows机器上适当的Oracle Instant Client,例如instantclient_12_1,并将其路径添加到SYSTEM环境变量中的PATH中。请注意,Oracle仅支持两个版本,因此请正确选择客户端版本。完成此操作后重新启动Apache。请注意,连接字符串非常不同,这是我使用的示例:
$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);
更新
我刚刚使用PDO_ODBC成功连接了Sybase。您需要的是以下内容:
必须安装带有 SDK 的 Sybase ASE ODBC 驱动程序。以下是连接字符串:
$connStr = "odbc:Driver={Adaptive Server Enterprise};server=".$myServer.";port=".$myPort.";db=".$myDB;
$conn = new PDO($connStr,$myUser,$myPass);