Zend Framework 2 - 数据库连接

时间:2013-04-26 11:17:24

标签: php zend-framework2

试图围绕Zend Framework 2.0的新概念。

我正在尝试连接到数据库,并在控制器或模型中获取该连接。 没什么好看的,只是纯粹的连接来运行查询。

所以这是我目前的代码:

//module.config.php
return array(
    'db' => array(
        'driver'         => 'Pdo',
        'dsn'            => 'mysql:dbname=DBNAME;host=HOSTNAME,
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
        'username' => 'USERNAME',
        'password' => 'PASSWORD',
    ),
    'service_manager' => array(
        'factories' => array(
            'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
            'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);

我做错了什么?

2 个答案:

答案 0 :(得分:9)

在./config/autoload文件夹中创建db.local.php并添加以下内容

return array(
'db' => array(
    'driver'         => 'Pdo',
    'dsn'            => 'mysql:dbname=zenBlog;host=localhost',
    'username'       =>'root',
    'password'      =>'',
    'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
    ),
),
'service_manager' => array(
    'aliases' => array(
'db' => 'Zend\Db\Adapter\Adapter',
),
),);

在您的控制器$this->getServiceLocator()->get('db');中访问数据库。

答案 1 :(得分:0)

这是我在config \ autoload \ local.php中的local.php的样子。

<?php
return array(
 'db' => array(
    'driver'         => 'Pdo',
     'dsn' => 'mysql:dbname=<dbname>;host=localhost',
     'username' => 'root',
     'password' => <your password here>,
     'driver_options' => array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
 ),
 ),
'service_manager' => array(
'aliases' => array(
'adapter' => 'Zend\Db\Adapter\Adapter',
),
),);

现在使用它来创建数据库适配器:

$adapter = $this->getServiceLocator()->get('adapter');

创建一个sql statetment并输入变量$ sql。 现在这样做:

$statement = $adapter->createStatement($sql);
$result = $statement->execute();

希望这有帮助。