由于MSSQL已被弃用,我如何使SQLSRV扩展与PHP一起工作?


How do I get the SQLSRV extension to work with PHP, since MSSQL is deprecated?

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

我在windows上。在我解压缩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获得。

下载后,请按照本页的说明操作:

  • 加载SQL Server PHP的Microsoft驱动程序

简而言之:

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

extension=php_sqlsrv_53_nts_vc9.dll  

重启Web服务器。

参见(copy from the page)

  • 系统要求(Microsoft Drivers for PHP for SQL Server)
  • 开始
  • 编程指南
  • SQLSRV驱动API参考(Microsoft Drivers for PHP for SQL Server)

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

SQLSRV扩展通过向PHP扩展目录添加适当的DLL文件和向PHP .ini文件添加相应的条目来启用。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一起使用

下载Microsoft 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已经发布的,这是微软的新扩展,使用sqlsrv_* API而不是mssql_*

更新:
在Linux上,您没有必要的驱动程序,也没有SQLSERV扩展。
看看连接到MS SQL服务器从PHP在Linux上?来讨论这个问题。

简而言之,你需要安装FreeTDS ,是的,你需要在linux上使用mssql_* functions参见更新2

从长远来看,为了简化事情,我建议创建一个带有必要函数的包装器类,这些函数根据加载的扩展使用适当的API (sqlsrv_*或mssql_*)。

更新2:

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

确保在这里下载SQL驱动程序https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15

然后移动与php版本相同的两个文件。(检查PHP -v)

在我的例子中,我使用的是7.4.30版本,并移动了php_pdo_sqlsrv_74_nts_x64.dll和Php_sqlsrv_74_nts_x64.dll到我的PHP文件夹ext

C:'Program Files'php7.4.30'ext

然后打开php.ini文件并添加扩展名,记得包含".dll";

extension=php_pdo_sqlsrv_74_nts_x64.dll
extension=php_sqlsrv_74_nts_x64.dll

如果您仍然有问题,请扩展dir = "ext"在php.ini中,将ext替换为ext文件夹的确切路径,如下所示:

extension_dir = "C:'Program Files'php7.4.30'ext'"