我使用以下几行从运行 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
请告诉我这是否适合您
关于php - PDO:setAttribute() 对 dblib 和 SQL Server 没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486004/