ZF2:如何动态连接数据库(没有global.php)

时间:2013-12-11 17:07:46

标签: php zend-framework2

我的ZF2应用程序必须连接到不同的MSSQL数据库(大约3000!) 所以我不能准备所有的连接。 (我当然不会连接到所有数据库,这取决于用户查询)。

我怎么能在控制器内做到这一点? (只有DB名称更改,服务器和用户始终相同)

THX

2 个答案:

答案 0 :(得分:0)

我不推荐那些,但您可以使用jours控制器中的pdo / mysqli / ..对象连接其他数据库。

$ dbh = new \ PDO('mysql:host = localhost; dbname = test',$ user,$ pass);

//否则,您可以创建多种服务来访问您的数据库。

答案 1 :(得分:0)

尝试:

use Zend\Db\Adapter\Adapter;
//...
$driver = array(
        'driver' => 'Pdo',
        'dsn' => 'mysql:dbname=yourdatabasename;host=yourdatabasehost',             
        'username' => 'username',
        'password' => 'password',
);
$adapter = new Adapter($driver);

//insert into database
$adapter->query("insert into foo(bar) values('foo value')",Adapter::QUERY_MODE_EXECUTE);

//select from database        
$result = $adapter->query('select * from foo',Adapter::QUERY_MODE_EXECUTE);
foreach ($result as $item)
    print_r((array)$item);

您可以将此$adapter传递给TableGateway并准备一个表格模型(例如YourModule \ Model \ FooTable)。