与MS SQL Server 2008 R2的PHP连接

与MS SQL Server 2008 R2的PHP连接,php,sql-server,pdo,sql-server-2008-r2,Php,Sql Server,Pdo,Sql Server 2008 R2,我正在实现一个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

我正在实现一个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本机客户端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_pdo_sqlsrv_54_nts.dll的PHP驱动程序v3.0也应该支持2008 R2

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

我使用的驱动程序与您的不同,我使用的是不同的驱动程序

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

$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();
}

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

好的,事实证明,包含2012本机客户端下载页面的MS SQL Server 2012功能包中的信息在某种程度上具有误导性

他们说,Microsoft®SQL Server®2012功能包是一组独立软件包,为Microsoft®SQL Server®2012提供了附加价值

这似乎意味着这些工具仅适用于MS SQL Server 2012,但事实并非如此

如果您使用的是PHP>=5.4,则必须使用2012本机客户端连接到MS SQL 2008 R2

这是包含正确信息的页面:

总之

PHP<5.4使用2.0驱动程序原生客户端2008 PHP>=5.4使用3.0驱动程序本机客户端2012 这对MSSQL Server 2008 R2和2012的连接都有效

免责声明:我还没有测试php<5.4与SQL Server 2012的连接