我使用以下行从运行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一直伴随着明显错误的查询。
答案 0 :(得分:-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
让我知道这是否适合您