5

试图围绕 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',
        ),
    ),
);

我究竟做错了什么?

4

2 回答 2

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'); 中访问数据库。

于 2013-04-26T11:28:51.167 回答
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 语句并放入变量 $sql。现在这样做:

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

希望这可以帮助。

于 2014-10-10T07:43:05.317 回答