我升级到PHP 5.3,并注意到缺少php_mssql.dll。谷歌搜索后,似乎5.3已经放弃了对mssql的支持。所以我从微软下载了驱动程序,但我似乎无法让它工作。
我在窗户上。在解压缩PHP 5.3的ext目录中的文件后,我需要做什么?
答案 0 :(得分:36)
引用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
重新启动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文件。
答案 1 :(得分:5)
下载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扩展
请查看Connect to MS SQL Server from PHP on Linux?以获取有关此问题的讨论。
简而言之,你需要安装FreeTDS 和YES,你需要在linux上使用mssql_ * functions 。 请参阅更新2
为了简化事情,我建议创建一个包含必需函数的包装类,这些函数根据加载的扩展名使用适当的API(sqlsrv_ *或mssql_ *)。
更新2: 您不需要在linux上使用mssql_ *函数。您可以使用PDO + ODBC + FreeTDS连接到ms sql服务器。在Windows上,最好的连接方法是通过PDO + ODBC + SQL Native Client,因为PDO + SQLSRV驱动程序可能非常慢。