This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server

回答 1 浏览 8.6万 2015-12-21

我已经在microsoft网站上下载了sqlsrv...

enter image description here

而在我的phpinfo()上

enter image description here

enter image description here

php.ini上启用了C:\wamp\bin\apache\apache2.4.9\binC:\wamp\bin\php\php5.5.12 在此输入图片描述

但还是出现了这样的错误。

Failed to get DB handle: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712 

而我的代码是

try {
    $dbh = new PDO ("sqlsrv:Server=$host;Database=$db","$user","$pass");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
  $stmt = $dbh->prepare("select top 5 from teams");
  $stmt->execute();
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
  unset($dbh); unset($stmt);
Storm Spirit 提问于2015-12-21
你有没有检查过你实际安装的是哪个版本的驱动程序?Marc B 2015-12-21
@MarcB 你是什么意思? 在哪里检查?Storm Spirit 2015-12-21
1 个回答
#1楼 已采纳
得票数 74

除了pdo_sqlsrv扩展外,你还需要在你的机器上安装ODBC 11驱动程序。

你可以在这些地点之一得到它:

Mark 提问于2015-12-21
halfer 修改于2019-02-09
谢谢你救了我,嘿嘿。GuiPab 2017-10-26
有一件重要的事情需要注意;尽管错误信息表明你需要x86驱动;如果你的服务器是x64,你必须安装x64。否则,你将无法安装,因为它会说"this driver is not compatible with you system"。不管怎么说,x64驱动已经包括x86。Turab 2019-02-11
值得注意的是,扩展列表中的sqlserv不是ODBC。这让我有点困惑。Itay Moav -Malimovka 2020-05-26
如果这是一个ODBC驱动程序,我们甚至需要启用sqlsrv扩展吗?alfadog67 2021-03-15
拥有sqlsrv,为什么我应该需要ODBC,在任何地方都没有解释,为什么我需要一个二进制的blob?以及我如何获得它的vanilla Linux发行版,(没有列出)作为标准的tarballs和make命令怎么了?NiKiZe 2021-12-07
标签