如何使用SQLSRV扩展来使用PHP,因为MSSQL已被弃用?

24 php sql-server dll

我升级到PHP 5.3,并注意到缺少php_mssql.dll.谷歌搜索后,似乎5.3已经放弃了对mssql的支持.所以我从微软下载了驱动程序,但我似乎无法让它工作.

我在窗户上.在解压缩PHP 5.3的ext目录中的文件后,我需要做什么?

Gor*_*don 37

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

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

下载后,请按照此页面上的说明操作:

简而言之:

将驱动程序文件放在PHP扩展目录中.
修改php.ini文件以包含驱动程序.例如:

extension=php_sqlsrv_53_nts_vc9.dll  
Run Code Online (Sandbox Code Playgroud)

重新启动Web服务器.

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

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一起使用.


dan*_*oel 5

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

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
Run Code Online (Sandbox Code Playgroud)

您可以在phpinfo()中看到线程安全状态.

将正确的文件添加到您的ext目录,并将以下行添加到您的php.ini:

extension=php_sqlsrv_53_*_vc*.dll
Run Code Online (Sandbox Code Playgroud)

使用您使用的文件的文件名.

正如Gordon已经发布的那样,这是来自Microsoft的新扩展,并使用sqlsrv_*API而不是mssql_*

更新:
在Linux上,您没有必需的驱动程序,也没有SQLSERV扩展.
看看Linux上从PHP连接到MS SQL Server?对此进行讨论.

总之,你需要安装FreeTDS 和YES,你需要在linux上使用mssql_*函数.见更新2

为了简化事情,我建议创建一个包含必需函数的包装类,这些函数根据加载的扩展使用适当的API(sqlsrv_*或mssql_*).

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