由于 MSSQL 已被弃用,我如何使 SQLSRV 扩展与 PHP 一起使用?
我升级到 PHP 5.3,注意到缺少php_mssql.dll。在谷歌搜索了一下之后,似乎5.3已经放弃了对mssql的支持。所以我从微软下载了驱动程序,但我似乎无法让它工作。
我在窗户上。解压缩 PHP 5.3 的 ext 目录中的文件后,我需要做什么?
我升级到 PHP 5.3,注意到缺少php_mssql.dll。在谷歌搜索了一下之后,似乎5.3已经放弃了对mssql的支持。所以我从微软下载了驱动程序,但我似乎无法让它工作。
我在窗户上。解压缩 PHP 5.3 的 ext 目录中的文件后,我需要做什么?
引用 http://php.net/manual/en/intro.mssql.php:
MSSQL扩展在带有PHP 5.3或更高版本的Windows上不再可用。SQLSRV是MS SQL的替代驱动程序,可从Microsoft获得:» http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx。
下载后,请按照此页面上的说明进行操作:
简而言之:
将驱动程序文件放在 PHP 扩展目录中。
修改 php.ini 文件以包含驱动程序。例如:extension=php_sqlsrv_53_nts_vc9.dll
重新启动 Web 服务器。
另请参阅(从该页面复制)
SQLSRV 扩展的 PHP 手册位于 http://php.net/manual/en/sqlsrv.installation.php,为安装提供了以下内容:
通过将适当的 DLL 文件添加到 PHP 扩展目录并将相应的条目添加到 php.ini 文件来启用 SQLSRV 扩展。SQLSRV 下载附带了几个驱动程序文件。使用哪个驱动程序文件将取决于 3 个因素:您使用的 PHP 版本、使用的是线程安全的 PHP 还是非线程安全的 PHP,以及 PHP 安装是使用 VC6 还是 VC9 编译器编译的。例如,如果您运行的是 PHP 5.3,并且您使用的是非线程安全的 PHP,并且您的 PHP 安装是使用 VC9 编译器编译的,则应使用 php_sqlsrv_53_nts_vc9.dll 文件。(如果使用 IIS 作为 Web 服务器,则应使用使用 VC9 编译器编译的非线程安全版本)。如果您运行的是 PHP 5.2,则使用的是线程安全的 PHP,并且 PHP 安装是使用 VC6 编译器编译的,则应使用 php_sqlsrv_52_ts_vc6.dll 文件。
这些驱动程序还可以与 PDO 一起使用。
下载 Microsoft Drivers for PHP for SQL Server。解压缩文件并使用以下方法之一:
File Thread Safe VC Bulid
php_sqlsrv_53_nts_vc6.dll No VC6
php_sqlsrv_53_nts_vc9.dll No VC9
php_sqlsrv_53_ts_vc6.dll Yes VC6
php_sqlsrv_53_ts_vc9.dll Yes VC9
您可以在phpinfo()中看到线程安全状态。
将正确的文件添加到您的 ext 目录,并将以下行添加到您的 php.ini:
extension=php_sqlsrv_53_*_vc*.dll
使用您所用文件的文件名。
正如Gordon已经发布的那样,这是Microsoft的新扩展,并使用sqlsrv_*API而不是mssql_*
更新:
在 Linux 上,您没有必需的驱动程序,也没有 SQLSERV 扩展。
看看从 Linux 上的 PHP 连接到 MS SQL Server?,了解这方面的讨论。
简而言之,你需要安装FreeTDS,是的,你需要在linux上使用mssql_*函数。查看更新 2
从长远来看,为了简化事情,我建议创建一个包含必要函数的包装器类,这些函数根据加载的扩展使用适当的API(sqlsrv_*或mssql_*)。
更新 2:您不需要在 linux 上使用 mssql_* 函数。您可以使用 PDO + ODBC + FreeTDS 连接到 ms sql 服务器。在Windows上,性能最佳的连接方法是通过PDO + ODBC + SQL Native Client,因为PDO + SQLSRV驱动程序可能非常慢。