PDO: setAttribute()对dblib和SQL Server不起作用


PDO: setAttribute() has no effect with dblib and SQL Server

我正在从运行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,
    )
);

连接工作得很好,除了ATTR_ERRMODE作为ERRMODE_WARNING工作,无论我做什么。

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

如果我使用getAttribute(),我可以确认PDO::ATTR_ERRMODE确实被设置为int(2) (ERRMODE_EXCEPTION),但我仍然得到警告和PHP保持随着明显错误的查询。

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

让我知道这是否适合你