RSS
 

Como criar conexão com banco de dados MySQL usando Zend Framework

02 fev

Developers,

para criarmos uma conexão com um banco de dados é muito simples. No arquivo de configuração application.ini, definiremos nossos resources (recursos) para conexão.

resources.db.adapter = "pdo_mysql"
resources.db.params.host = "mysql.servidor.com"
resources.db.params.username = "seunomedeusuario"
resources.db.params.password = "suasenhadobancodedados"
resources.db.params.dbname = "nomedobancodedados"
resources.db.params.charset = "utf8"
resources.db.isDefaultTableAdapter = true

Com esses parâmetros definidos, precisaremos agora criar uma função protegida dentro do Bootstrap.php para criar a conexão. Vamos dar o nome de _initConnection.

    /**
     * Função faz a conexão com o banco de dados e registra a variável $db para
     * que ela esteja disponível em toda a aplicação.
     */
    protected function _initConnection()
    {
        /**
         * Obtém os resources(recursos).
         */
        $options    = $this->getOption('resources');
        $db_adapter = $options['db']['adapter'];
        $params     = $options['db']['params'];

        try{

            /**
             * Este método carrega dinamicamente a classe adptadora
             * usando Zend_Loader::loadClass().
             */
            $db = Zend_Db::factory($db_adapter, $params);

            /**
             * Este método retorna um objeto para a conexão representada por uma
             * respectiva extensão de banco de dados.
             */
            $db->getConnection();

            // Registra a $db para que se torne acessível em toda app
            $registry = Zend_Registry::getInstance();
            $registry->set('db', $db);

        }catch( Zend_Exception $e){

            echo "Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por favor.";

            exit;
        }

    }

Se conseguirmos assimilar bem os comandos do Zend Framework, vemos que ele não é tão assim um bicho de sete cabeças! :D

É isso developers! Abraços!


Artigos relacionados:

  1. Como criar um sistema de login com Zend Framework
  2. Como criar um projeto usando a Zend_Tool do Zend Framework
  3. Como estruturar uma aplicação completa usando Zend Framework
  4. Como configurar uma aplicação completa usando Zend Framework
  5. Como usar a Zend_Tool para criar um projeto em Zend Framework
 

Leave a Reply

 
 
  1. chicosilva

    05/02/2010 at 17:05

    Bacana teus posts… esse de conexão ao banco me ajudou pra caramba!

     
  2. Criando um sistema de login com Zend Framework « Daniel Developer

    09/02/2010 at 02:50

    [...] publiquei um artigo sobre como criar conexão com banco de dados MySQL usando Zend Framework. Nele a aplicação está bem [...]

     
  3. Chicosilva

    27/02/2010 at 09:10

    Não estou conseguindo usar o profiler com o ex q vc deu.. o q pode ser? Como q vc usa?

    $profiler = new Zend_Db_Profiler_Firebug(‘db-profiling’);
    $profiler->setEnabled(true);

    $db->setProfiler($profiler);

    $db->getConnection();

     
  4. Daniel Developer

    27/02/2010 at 16:56

    Chico,

    tente acrescentar o parâmetro “profiler => true” assim:

    $params = array(
        'host'     => '127.0.0.1',
        'username' => 'webuser',
        'password' => 'xxxxxxxx',
        'dbname'   => 'test'
        'profiler' => true  // Habilita o profiler
    );
     
  5. Luiz Roberto

    14/03/2010 at 17:47

    Daniel, estou gostando muito do seu blog, mas, esta conexão com o banco de dados sempre cai na exceção de erro. Estou utilizando seu exemplo de estrutura e apenas adicionei as configurações no arquivo application.ini e no arquivo Bootstrap.php. Configurei os parametros de conexão de acordo com o banco de dados que tenho aqui e so exibe a mensagem da exceção. O que será que esta errado???

     
  6. Daniel Developer

    15/03/2010 at 03:45

    Luiz Roberto,

    que bom que está gostando do blog, tem como você mandar um exemplo de como está fazendo? Quais configurações? Tem algum ponto que tem dúvida? tente me passar essas informações para que eu possa te ajudar.

    Abraços

     
  7. Roberto

    07/04/2010 at 06:55

    Sei lá.. Não é muita coisa não só para criar uma conexão com um bd?
    Se fizer na unha fica muito menor e mais simples o código, qual é a vantagem de se usar um framework..?
    Vlws..

     
  8. Daniel Developer

    07/04/2010 at 15:22

    Roberto,

    não é muita coisa, desde que essa conexão fica disponível por toda a aplicação. Criando uma conexão com banco de dados usando o Zend Framework, você garante muitas funcionalidades indispensáveis como autenticidade e autorização de forma rápida, e muito mais. O zend framework é muito complexo, mas a partir de um certo tempo de estudo, tudo fica mais fácil e ágil. Garanto.

    Qualquer dúvida, to por aqui pra ajudar.

    Abraços

     
  9. Romualdo Fernandes

    09/04/2010 at 03:11

    Daniel,

    Parabens pelo site. Estou começando agora a utilizar o Zend Framework e queria saber se voce pode disponibilizar algum projeto (pequeno mesmo) utilizando o zend. Estou meio perdido ainda nas estruturas.

    Abraço

     
  10. Daniel Developer

    09/04/2010 at 03:49

    Romualdo,

    já temos disponível o “Sample Project” que é um simples projeto onde ensino como funciona, estrutura e configura uma aplicação usando Zend Framework. Veja nesse link: http://www.danieldeveloper.com/category/zend-framework/sample-project/

    Obrigado pelo elogio. Abraços

     
  11. Alexandre

    15/04/2010 at 12:09

    Boa tarde Daniel!

    Os seus tutoriais são os únicos que funcionam para mim hehehhe.

    Mas estou tendo um problema na validação dos dados informados. Cadastrei na mão o usuario, email e senha mas sempre cai na mensagem de dados incorretos.

    Tem ideia do que pode estar acontecendo?

    Abraços

     
  12. Daniel Developer

    19/04/2010 at 05:10

    Alexandre, qual validação tipo de validação esta usando? Zend_Validade? E qual verificação?

    Abraços, e que bom que os tutoriais estão funcionando.

     
  13. Paulo Sérgio

    26/04/2010 at 09:24

    Daniel, segui os passos do tutorial e mesmo assim continua aparecendo a mensagem de exceção.
    Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por

    Meu aplication.ini ficou assim:

    resources.db.adapter = “pdo_mysql”
    resources.db.params.host = “127.0.0.1″
    resources.db.params.username = “root”
    resources.db.params.password = “root”
    resources.db.params.dbname = “zfseries”
    resources.db.params.charset = “utf8″
    resources.db.isDefaultTableAdapter = true
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH “/../library”
    bootstrap.path = APPLICATION_PATH “/Bootstrap.php”
    bootstrap.class = “Bootstrap”
    appnamespace = “Application”
    resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”
    resources.frontController.params.displayExceptions = 0
    resources.layout.layoutPath = APPLICATION_PATH “/layouts/scripts/”

    [staging : production]

    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1

    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1

    E meu bootstrap assim:

    getOption(‘resources’);
    $db_adapter = $options['db']['adapter'];
    $params = $options['db']['params'];

    try{

    /**
    * Este método carrega dinamicamente a classe adptadora
    * usando Zend_Loader::loadClass().
    */
    $db = Zend_Db::factory($db_adapter, $params);

    /**
    * Este método retorna um objeto para a conexão representada por uma
    * respectiva extensão de banco de dados.
    */
    $db->getConnection();

    // Registra a $db para que se torne acessível em toda app
    $registry = Zend_Registry::getInstance();
    $registry->set(‘db’, $db);

    }catch( Zend_Exception $e){

    echo “Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por”;

    exit;
    }

    }

    }

    Você pode me ajudar.

     
  14. Paulo Sérgio

    26/04/2010 at 11:37

    Ops.
    coloquei o bootstrap errado, ele está assim:

    getOption(‘resources’);
    $db_adapter = $options['db']['adapter'];
    $params = $options['db']['params'];

    try{

    /**
    * Este método carrega dinamicamente a classe adptadora
    * usando Zend_Loader::loadClass().
    */
    $db = Zend_Db::factory($db_adapter, $params);

    /**
    * Este método retorna um objeto para a conexão representada por uma
    * respectiva extensão de banco de dados.
    */
    $db->getConnection();

    // Registra a $db para que se torne acessível em toda app
    $registry = Zend_Registry::getInstance();
    $registry->set(‘db’, $db);

    }catch( Zend_Exception $e){

    echo “Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por”;

    exit;
    }

    }

    }

     
  15. Daniel Developer

    26/04/2010 at 14:09

    Paulo Sérgio,

    qual versão do Zend Framework você está utilizando? E a senha do seu banco é mesmo “root”? Geralmente “root” é o user e o pass é vazio.

     
  16. Paulo Sérgio

    27/04/2010 at 03:28

    Bom dia Daniel, Obrigado pela resposta.
    A versão do Zend Framework que estou usando é a 1.10.3.
    E sim, realmente minha senha é root, meu usuário é root e meu banco chama-se zfseries.
    Tanks…

     
  17. bezerrath

    27/04/2010 at 19:43

    galera ativa, template e conteudo clean. gostei.

     
  18. Daniel Developer

    28/04/2010 at 03:39

    Obrigado, estamos sempre por aqui comentando e aprendendo muito sobre o Zend Framework.

     
  19. Paulo Sérgio

    28/04/2010 at 04:40

    Você tem alguma ideia do que possa estar causando o erro no meu caso citado acima Daniel?

     
  20. Daniel Developer

    28/04/2010 at 05:34

    Paulo Sérgio :

    Você tem alguma ideia do que possa estar causando o erro no meu caso citado acima Daniel?

    Este tutorial não foi testado na versão 1.10.3 ainda. Prometo testar e compartilhar aqui com vocês.

     
  21. Bruce

    19/05/2010 at 09:06

    galera ativa, template e conteudo clean. gostei.

     
  22. Ricardo

    27/05/2010 at 06:23

    Gostei do post! me ajudou bastante..

    Porem, ainda tenho algumas duvidas.
    Estou começando a “fuçar” no ZF agora, ja consegui fazer toda a configuração, ate mesmo com o smarty, porem nao estou conseguindo fazer a conexão com o banco…
    Após essa configuração que voce postou, como que eu faço pra exbir (consultar/select) algum campo do meu banco?

    Valeu!

     
  23. Daniel Developer

    03/06/2010 at 12:36

    Ricardo,

    Que bom que o post está ajudando. Para fazer consulta no banco tente usar o zend_db_select http://framework.zend.com/manual/en/zend.db.select.html

     
  24. Vinicius

    06/08/2010 at 05:22

    Olá Daniel,

    Estamos usando o lampp, então tentamos fazer uma conexão com o banco de dados utilizando os teus exemplos. Porem, não conseguimos, pois no método “_initConnection” do Bootstrap.php sempre cai na exceção.

    No arquivo application.ini:

    resources.db.adapter = “pdo_mysql”
    resources.db.params.host = “192.168.2.90″
    resources.db.params.username = “root”
    resources.db.params.password = “”
    resources.db.params.dbname = “Sistema_Egressos”
    resources.db.params.charset = “utf8″
    resources.db.isDefaultTableAdapter = true

    Método initConnection:

    protected function _initConnection()
    {
    /**
    * Obtém os resources(recursos).
    */

    $options = $this->getOption(‘resources’);

    $db_adapter = $options['db']['adapter'];

    $params = $options['db']['params'];

    try{
    /**
    * Este método carrega dinamicamente a classe adptadora
    * usando Zend_Loader::loadClass().
    */

    $db = Zend_Db::factory($db_adapter, $params);

    /**
    * Este método retorna um objeto para a conexão representada por uma
    * respectiva extensão de banco de dados.
    */

    $db->getConnection();

    // Registra a $db para que se torne acessível em toda app

    $registry = Zend_Registry::getInstance();

    $registry->set(‘db’, $db);

    }catch( Zend_Exception $e){

    echo “Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por favor.”;

    exit;
    }
    }

    O que pode estar acontecendo?

    Abraço e obrigado por disponibilizar este material de boa qualidade!

     
  25. Dieison

    06/08/2010 at 17:06

    Daniel, muito legal os posts!
    Tentei fazer a conexão como no post, porém cai sempre na exceção no método _initConnection().
    Daí alterei o método _initConnection() no Bootstrap e ficou assim:

    protected function _initConnection()
    {
    /**
    * Obtém os resources(recursos).
    */
    $options = $this->getOption(‘resources’);
    $db_adapter = $options['db']['adapter'];
    $params = $options['db']['params'];
    try{
    //nova maneira
    //pega os dados de conexao do application e usa
    $db = Zend_Db_Table::getDefaultAdapter();

    // Registra a $db para que se torne acessível em toda app
    $registry = Zend_Registry::getInstance();
    $registry->set(‘db’, $db);

    }catch( Zend_Exception $e){

    echo “Estamos sem conexao ao banco de dados neste momento. Tente mais tarde por favor.”;

    exit;
    }

    }

    Parece que desta forma funcionou. O que vc acha?
    Abraço.
    PS: continua com os posts estão bem legais!

     
  26. Daniel Developer

    13/08/2010 at 04:07

    Vinícius,

    tente retirar o $db->getConnection() do try e faça o debug do que a função retornar.

    Abs

     
  27. Daniel Developer

    13/08/2010 at 04:09

    Dieison,

    bacana cara, é assim mesmo, não podemos ficar reféns de nossos códigos. Good Job!

    Abs

     
  28. Roberto

    17/08/2010 at 11:42

    Não funcionou no 1.10.7 =/