我如何将 sybase 连接到 zendframework 3?

how do i connect sybase to zendframework 3?

我无法将 sybase 连接到 zf3。但我可以连接核心 php.

$Appname = basename($_SERVER['SCRIPT_FILENAME'], ".php");
    $Dsquery = getenv("DSQUERY");
    $Dbname = "tempdb";
    $Username = "sa";
    $Passwd = "xxxxxxxx";

$conn = sybase_connect($Dsquery, $Username, $Passwd);

它能够与核心 php 和 sybase 连接。

在下面告诉我如何连接 ZF3。

return [
    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'driverClass' => PDOMySqlDriver::class,
                'params' => [
                    'host'     => 'localhost',                    
                    'user'     => 'root',
                    'password' => '1234',
                    'dbname'   => 'test_db',
                ]
            ],            
        ],        
    ],
    'db' => [
        'driver' => 'Mysqli',
        'database' => 'test_db',
        'username' => 'root',
        'password' => '1234',
    ],
];

正如documentation所说,SYBASE官方还没有官方的支持。

这里也有人问:Is it possible to work with a Sybase DB natively in Doctrine 2?

但是,如果您查看 GitHub,有人添加了支持:https://github.com/doctrine/dbal/pull/2347

如您所见,它正在失败。不过你当然可以试一试,也许自己会修好。

祝你好运!

1.We 已安装 Devart 以与 Sybase 建立 PDO odbc 连接。

2.Need 在 ODBC 数据源管理员的系统 DSN 中创建 Devart 驱动程序

3.Then 在 zend3 中我们使用 pdo 连接与 devart odbc。

4.To 实现学说,我们将连接对象传递给学说参数。

<?php
use Doctrine\DBAL\Driver\PDOMySql\Driver as PDOMySqlDriver;
$connPdo = null;

try {
    $connPdo = new PDO("odbc:DRIVER={Devart ODBC Driver for ASE};host=Develop;dbname=poc;charset=utf8", "sa", "");
    $connPdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo $e->getMessage() . '</br>';
}
return [
    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'driverClass' => PDOMySqlDriver::class,
                'params' => [
                    'pdo' => $connPdo
                ]
            ],            
        ],        
    ],
];

使用免费且高效的 DBLIB 驱动程序。使用下面的代码。

$connPdo = new PDO("dblib:host=localhost;dbname=dbname;", "username", "password");