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

标签 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,
    )
);

连接工作得很好,除了 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/

相关文章:

php - MySQL 查询结果顺序不正确

php - 使用 PHP 将字符串转换为二进制然后再返回

mysql - phpMyAdmin 的替代方案

sql - 使用一对一的键快速合并表

php - MySQL 时间戳列的时间戳不匹配

php - 如何在android HttpURLConnection中模仿PHP表单的 "push submit"按钮的 Action

php - 拉拉维尔 6 : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

.net - SQL Server DateDiff 与 .Net DateDiff

sql-server - SQL——清除执行缓存

c# - 错误: String or binary data would be truncated. 表值参数的数据不符合参数的表类型