PDO:setAttribute()对dblib和SQL Server没有影响

Nic*_*ane 13 php sql sql-server pdo

我使用以下行从运行PHP 5.3.19的Linux服务器连接到SQL Server数据库(SQL Server 2008 R2 SP2 x64):

$this->dbLink = new PDO(
    'dblib:host='.$this->host.';dbname='.$this->database,
    $this->user,
    $this->password,
    array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    )
);
Run Code Online (Sandbox Code Playgroud)

连接工作完全正常,除了ATTR_ERRMODE用作ERRMODE_WARNING,无论我做什么.

我已经尝试$this->dbLink->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);在查询调用之前使用它,但它没有任何效果.

如果我使用getAttribute(),我可以确认PDO :: ATTR_ERRMODE确实设置为int(2)(ERRMODE_EXCEPTION),但我仍然收到警告,PHP一直在显着错误查询.

elG*_*LLa -1

PDO_DBLIB 是一个实验性扩展,不应用于生产环境。

http://www.php.net/manual/en/ref.pdo-dblib.php

如果可以的话,您应该使用 PDO_SQLSRV 代替:

http://www.php.net/manual/en/ref.pdo-sqlsrv.php

只需将连接设置更改为dblib:PDO_SQLSRV 驱动程序 dns 前缀sqlsrv:

http://www.php.net/manual/en/ref.pdo-sqlsrv.connection.php

让我知道这是否适合你