如何让mssql与PHP 5.3一起工作?

我升级到PHP 5.3,并注意到php_mssql.dll丢失。 谷歌search了一下之后,似乎5.3已经放弃了对mssql的支持。 所以我从微软下载了驱动程序,但我似乎无法得到它的工作。

我在窗户上。 在我的PHP 5.3的ext目录下解压文件之后,我需要做什么?

引用http://php.net/manual/en/intro.mssql.php

MSSQL扩展在Windows 5.3或更高版本的Windows上不可用。 可从Microsoft获得MS SQL的替代驱动程序SQLSRV:» http://msdn.microsoft.com/zh-cn/sqlserver/ff657782.aspx

一旦你下载了,请按照这个页面上的说明:

  • 加载用于SQL Server的Microsoft驱动程序

简而言之:

把驱动程序文件放到你的PHP扩展目录中。
修改php.ini文件以包含驱动程序。 例如:

extension=php_sqlsrv_53_nts_vc9.dll 

重新启动Web服务器。

另请参见(从该页面复制)

  • 系统要求(适用于SQL Server的Microsoft驱动程序)
  • 入门
  • 编程指南
  • SQLSRV驱动程序API参考(适用于SQL Server的Microsoft驱动程序)

SQLSRV扩展的PHP手册位于http://php.net/manual/en/sqlsrv.installation.php并提供以下安装:;

通过将适当的DLL文件添加到您的PHP扩展目录和php.ini文件的相应条目来启用SQLSRV扩展。 SQLSRV下载附带几个驱动程序文件。 您使用的驱动程序文件取决于3个因素:您使用的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一起使用 。

下载用于SQL Server的Microsoft驱动程序 。 提取文件并使用以下之一:

 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

为了简化长期的工作,我build议创build一个包装类,其中包含使用基于哪个扩展加载的相应API(sqlsrv_ *或mssql_ *)所必需的函数。

更新2:你不需要在Linux上使用mssql_ *函数。 您可以使用PDO + ODBC + FreeTDS连接到ms sql服务器。 在Windows上,连接最好的方法是通过PDO + ODBC + SQL Native Client,因为PDO + SQLSRV驱动程序可能非常慢。