2013-04-26 15 views
5

Zend Framework 2.0の新しいコンセプトに挑戦しています。Zend Framework 2 - データベース接続

私はデータベースに接続し、その接続をコントローラまたはモデルで取得しようとしています。 何も気にせず、クエリを実行する純粋な接続だけです。

だからこれは私の現在のコードです:私は間違っ

//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', 
     ), 
    ), 
); 

何をしているのですか?

+0

mysql:dbname = DBNAME; host = HOSTNAMEが最後に見つかりませんでしたか? – Svetoslav

答えて

9

は、あなたの./config/autoloadフォルダにdb.local.phpを作成し、データベースにアクセスするには、次の内容をあなたのコントローラ$this->getServiceLocator()->get('db');

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', 
), 
),); 

を追加します。

+0

ありがとう、その作業! この接続をモデル/他のクラスにアクセスする方法を教えてください。 – grubolsch

+0

これは2つの別々の接続を含むようにどのように修正されますか? 'db'配列と' db'エントリを 'aliases'にコピーして、それらを' 'db2'? –

+0

私はそれを試していないが、それはエイリアスのコピーと名前を変更することによって行うことができると思う。 – user773440

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(); 

・ホープ、このことができます。

+0

Typoそこに、私は思う、 'dsn'ではない 'dbn' – Kzqai

+0

@Kzqai:修正されました。ありがとう –

関連する問題