PHP 5.6.x失去了连接ODBC源的能力

时间:2017-02-14 18:31:38

标签: php pdo odbc

我有一个奇怪的问题。我的服务器已运行PHP 5.6多年没问题。 (WinServer Std 2K8 SP2,IIS 6,MySQL 5.6 {独立服务器},PHP 5.6)

我们将它连接到母公司的DB2服务器。今天(2017-02-14)ODBC连接(PDO_ODBC)开始返回"找不到驱动程序"。

Excel可以使用相同的ODBC连接来查询数据库 - ODBC连接正在运行。

我尝试使用PDO方法和程序方法进行连接。无法双向看到驾驶员。

来自phpinfo()ODBC Data PDO Data

代码段:

$dsn = "odbc:workingODBCdsn";
$user = "xxxx";
$password = "yyyy";
$conn = null;
$results = array();

try {
    $conn = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die($e->getMessage());
}

if ($conn) {
    $qry = $conn->query($sql);
    if ($qry) {
        $qry->setFetchMode(PDO::FETCH_ASSOC); 
        foreach ($qry as $row) {
            $results[] = $row;
        }
    }
}

print "<pre>" . print_r($results, true) . "</pre>";

//ALT Method
$conn = odbc_connect($dsn, $user, $password);
$results = odbc_exec($conn, $sql);

print "<pre>" . print_r($results, true) . "</pre>";

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您使用的是unixODBC还是ibm_db2(http://php.net/manual/en/ref.pdo-odbc.php)?它建议使用带有“ibm_db2”扩展名的IBM DB2 Universal Database。它比使用通用驱动程序更快,更有效。它使用扩展名调用本机IBM DB2函数。

php.net IBM DB2 functions manual

查看db2_ *函数

答案 1 :(得分:0)

服务器的PHP实例从IIS切换到IISExpress。将其切换回(完整)IIS,并且已经启用了所有适当的PDO驱动程序,修复了问题。