【问题标题】:PHP connection to MS SQL Server 2008 R2与 MS SQL Server 2008 R2 的 PHP 连接
【发布时间】:2014-08-07 19:04:51
【问题描述】:

我正在实现一个 PHP 应用程序,它需要能够连接到 MS SQL Server 2012 和 2008 R2。

使用此配置可​​以正常连接到 2012

  • Windows 7 64 位
  • IIS 7.5
  • PHP 5.5.13
  • sql srv 本机客户端 11.0
  • php_pdo_sqlsrv_55_nts.dll
  • php_sqlsrv_55_nts.dll

到 2008 R2 的连接不适用于此配置:

  • Windows 7 64 位
  • IIS 7.5
  • PHP 5.4.10
  • sql srv 本机客户端 10.5
  • php_pdo_sqlsrv_54_nts.dll
  • php_sqlsrv_54_nts.dll

我收到一条错误消息,提示“此扩展需要 Microsoft SQL Server 2012 Native Client ODBC 驱动程序才能与 SQL Server 通信。”

这是我用来连接的代码。

class my_mssql{

protected $dsn;
protected $dbh;
protected $server;
protected $user;
protected $password;
protected $colnames;
public $error;
public $resultset;    

function __construct($db, $user, $password, $server='localhost'){

    $this->dsn = 'sqlsrv:Server='.$server.';Database='.$db;

    $this->server = $server;
    $this->user = $user;
    $this->password = $password;

    try {
        $this->dbh = new PDO($this->dsn, $user, $password);
    } catch (PDOException $e) {
        $this->error = $e->getMessage();
    }
}
}

似乎php_pdo_sqlsrv_54_nts.dll 只支持连接到2012。我说的对吗? 另一方面,在 MS 下载页面上,他们说 PHP 驱动程序 v3.0(包含 php_pdo_sqlsrv_54_nts.dll)也应该支持 2008 R2。

我可以从 PHP 5.4 连接到 2008 R2 吗? 我是否应该以不同的方式实现 2008 R2 连接?

【问题讨论】:

    标签: php sql-server pdo sql-server-2008-r2


    【解决方案1】:

    我没有和你用同一个驱动,我用Mssql代替。

    我有一个Windows Server 2008 R2 64 bit,这是我与该服务器的工作连接:

    $this->dsn = 'mssql:host='.$server.';dbname='.$db;
    
    $this->server = $server;
    $this->user = $user;
    $this->password = $password;
    
    try {
        $this->dbh = new PDO($this->dsn ,$user, $password);
    } catch (PDOException $e) {
        $this->error = $e->getMessage();
    }
    

    老实说,我不知道有什么区别,有很多方法和驱动程序可以连接你知道。

    【讨论】:

      【解决方案2】:

      好吧,事实证明 MS SQL Server 2012 Feature Pack(包含 2012 Native Client)下载页面上的信息在某种程度上具有误导性。

      他们说“Microsoft® SQL Server® 2012 Feature Pack 是一组独立软件包,可为 Microsoft® SQL Server® 2012 提供额外价值。”

      这似乎暗示这些工具仅适用于 MS SQL Server 2012,但事实并非如此。

      如果您使用 PHP >= 5.4,也必须使用 2012 Native Client 连接到 MS SQL 2008 R2

      所以这是包含正确信息的页面: http://technet.microsoft.com/en-us/library/cc296170(v=sql.105).aspx

      总结

      • PHP
      • PHP >= 5.4 使用 3.0 驱动程序(本机客户端 2012)

      这对于与 MSSQL Server 2008 R2 和 2012 的连接均有效

      免责声明:我尚未测试 php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多