5

我有一个基于 MS SQL Server 2000 构建的遗留业务应用程序。我有一些基于 Web 的实用程序,它们使用带有 mssql 扩展的 PHP 5.2 访问这个数据库。

我需要重新安装网络服务器,我期待升级到 PHP 5.4。不幸的是,PHP 5.3 和更新版本不支持 mssql 扩展。Microsoft 提供了sqlsrv 扩展,但描述说它仅支持访问 SQL Server 2005 及更高版本。

如何从 PHP 5.4 连接到我的 SQL Server 2000?有人已经解决了这个问题吗?

4

1 回答 1

13

这是一个非常复杂的问题。以下是(内)兼容性的详细信息,因此其他人可能会花更少的时间搜索和尝试。

来自 Microsoft 的 PHP 扩展 sqlsrv

sqlsrv 存在两个(+ 非官方)版本,它们仅与 32 位 PHP 兼容。当前没有 64 位 PHP 的版本。

  • sqlsrv 2.0 版兼容 PHP 5.2.4 到 5.3.x 和 SQL Native 客户端 2008 R2 以连接到 Microsoft SQL Server 2000、2005 或 2008。
  • sqlsrv 3.0 版兼容 PHP 5.3.0 到 5.4.x 和 SQL Native 客户端 2012 以连接到 Microsoft SQL Server 2005、2008、2008 R2 和 SQL Server 2012。
  • 目前没有正式版本支持PHP 5.5
  • Rob's Area 上有一个非官方版本的 SQLSRV 3.0,它不需要 SQL Native 客户端 2012,但应该与以前的 SQL Native 客户端一起运行。这个我还没试过。

PHP的ODBC扩展

使用 PHP 5.4 访问 SQL Server 2000 的另一种方法是通过 odbc 扩展。可以使用 SQL Server 2000 的三个 ODBC 驱动程序进行连接:

  • 预装 Windows 2008 R2 的 SQL Server ODBC 客户端版本 6.00
  • SQL Server Native Client 9.0(SQL Server 2005 功能包)
  • SQL Server Native Client 10.0(SQL Server 2008 R2 功能包)

每个 ODBC 驱动程序的连接代码:

$connection_string = 'DRIVER={SQL Server};SERVER=mbsql;DATABASE=vg1';
$connection_string = 'DRIVER={SQL Native Client};SERVER=mbsql;DATABASE=vg1';
$connection_string = 'DRIVER={SQL Server Native Client 10.0};SERVER=mbsql;DATABASE=vg1';
$connection = odbc_connect( $connection_string, $user, $pass );

这些连接适用于 PHP 32 位和 64 位。我还没有测试哪一个是最好的。

于 2013-11-05T11:06:56.653 回答