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!
É isso developers! Abraços!
Artigos relacionados:
- Como criar um sistema de login com Zend Framework
- Como criar um projeto usando a Zend_Tool do Zend Framework
- Como estruturar uma aplicação completa usando Zend Framework
- Como configurar uma aplicação completa usando Zend Framework
- Como usar a Zend_Tool para criar um projeto em Zend Framework
chicosilva
05/02/2010 at 17:05
Bacana teus posts… esse de conexão ao banco me ajudou pra caramba!
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 [...]
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();
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 );it is carzy - help me: problem connecting to db - Zend Framework Forum
09/03/2010 at 03:34
[...] [...]
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???
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
problems putting a ZF on the godaddy server - Zend Framework Forum
19/03/2010 at 01:41
[...] [...]
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..
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
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
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
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
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.
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.
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;
}
}
}
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.
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…
bezerrath
27/04/2010 at 19:43
galera ativa, template e conteudo clean. gostei.
Daniel Developer
28/04/2010 at 03:39
Obrigado, estamos sempre por aqui comentando e aprendendo muito sobre o Zend Framework.
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?
Daniel Developer
28/04/2010 at 05:34
Este tutorial não foi testado na versão 1.10.3 ainda. Prometo testar e compartilhar aqui com vocês.
Bruce
19/05/2010 at 09:06
galera ativa, template e conteudo clean. gostei.
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!
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
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!
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!
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
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
Roberto
17/08/2010 at 11:42
Não funcionou no 1.10.7 =/