windows下PHP安装MSSQL扩展后可以只用pdo连接mssql

  1. 查看已安装的php版本(重要,如果版本和所下载的.dll文件不匹配,配置后仍然会无效)

  2. 下载并直接安装微软提供的官方ODBC驱动(必须,否则配置失效):
    https://docs.microsoft.com/zh-cn/sql/connect/odbc/windows/release-notes-odbc-sql-server-windows?view=sql-server-ver15#13

  3. 根据php版本号,查看并下载微软提供的官方MSSQL扩展:
    https://docs.microsoft.com/zh-cn/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver15
    得到.exe压缩包(又称SQLSRV驱动程序)

  4. 直接解压该压缩包,得到一些.dll扩展文件,可能如下图所示(版本号会有所不同):


    SQLSRV驱动程序
  5. 此压缩包中提供两种文件:pdo_sqlsrv类型驱动程序(如:图中前四个.dll文件)和sqlsrv类型驱动程序(如:图中后四个.dll文件)。从两种类型各选择一个与当下php运行环境相匹配的.dll文件,粘贴进php的ext文件夹中。

  6. .dll文件选择须知:

    1. 为什么要两种驱动程序中各选一个并同时使用?
      答:sqlsrv 驱动程序用于提供与 SQL Server 交互的过程接口,pdo_sqlsrv 驱动程序用于实现 PHP面向对象的PDO接口,用于处理数据库
    2. TS类型驱动程序和NTS类型驱动程序应该选哪个?
      答:TS(Thread-Safety)即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时进行数据加锁保护,其他线程不能同时进行访问该数据,直到该线程读取完毕,其他线程才可访问使用该数据,好处是不会出现数据不一致或者数据污染的情况,坏处是耗费的时间要比 NTS 长。PHP以 ISAPI 方式(Apache 常用方式)加载的时候选择TS版本。NTS: NTS(None-Thread Safe)即非线程安全,不提供数据访问保护,有可能出现多个线程先后或同时操作同一数据的情况,坏处是容易造成数据错乱(即脏数据),好处是一般操作执行时间比 TS 短
  7. 根据上条原则,我的电脑是x64系统,于是选择php_sqlsrv_7_ts_x64.dll文件和php_pdo_sqlsrv_7_ts_x64.dll文件。接下来,修改php的php.ini文件,在其中增加扩展连接并保存修改:
    extension=php_sqlsrv_7_ts_x64.dll
    extension=php_pdo_sqlsrv_7_ts_x64.dll

  8. 重启Apache服务,使用phpinfo()函数检查输出是否成功

原文链接:https://blog.csdn.net/Tuimaohenyouya/article/details/137766107

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容