【发布时间】:2013-08-15 23:48:46
【问题描述】:
我正在尝试开发一个 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 并使用在重新启动 Apache 后使用 xampp 安装的 dll,服务器无法启动。是尝试使用 PDO_OCI [Oracle (PDO)])
我知道我可以使用特定于数据库的驱动程序来解决这两个问题,但我真的很想将 PDO 用于我需要的一切。
有谁知道如何安装和启用 PDO_DBLIB 和 PDO_OCI 驱动程序或 Windows 机器,或使用 PDO 连接 Sybase 和 Oracle 数据库的任何其他方式?
更新
刚刚使用 PDO_OCI 成功连接了 oracle。您需要做的是:
在您的 Windows 机器上下载并安装正确的 Oracle Instant Client 例如 instantclient_12_1 并将其路径添加到 SYSTEM 中的 PATH 环境变量。注意 Oracle 只支持向下 2 个版本所以选择 您的客户端版本正确。这样做,然后重新启动您的 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);
更新
刚刚与 Sybase 以及 PDO_ODBC 连接。您需要的是以下内容:
必须具有 SDK 附带的 Sybase ASE ODBC 驱动程序。在下面找到使用的连接字符串:
$connStr = "odbc:Driver={Adaptive Server Enterprise};server=".$myServer.";port=".$myPort.";db=".$myDB;
$conn = new PDO($connStr,$myUser,$myPass);
【问题讨论】:
-
请问为什么你想连接尽可能多的不同数据库?
-
当然,我正在尝试从不同系统收集信息以显示在一个地方。有点像监控错误表和一些统计信息的门户。
-
用连接 oracle 和 PDO_OCI 的解决方案更新了我的帖子。如果有人也有 sybase 的解决方案,请告诉我们
-
用与 Sybase 连接的解决方案更新了我的帖子。使用了 PDO_ODBC。