Zend framework – conectando-se com um banco de dados

Optando pela versatilidade, o exemplo explica a conexão de um banco de dados a partir do arquivo de inicialização application.ini da estrutura do zend framework, que define as configurações básicas do software/site. Através dessa lógica definimos um adaptador PDO específico de acordo com o banco de dados utilizado (Mysql, MS SQL Server ou PostgreSQL) que integra-se a um módulo padronizado de classes e métodos que faz a conexão ser realizada. Veja a seguir os passos utilizados para definir essa conexão: Entre no arquivo application.ini dentro da pasta application/config e defina as seguintes configurações abaixo da parâmetro [production]:

MySQL

resources.db.adapter = “PDO_MYSQL”
resources.db.params.host = “ENDEREÇO DO SERVIDOR”
resources.db.params.username = “LOGIN DO BANCO DE DADOS”
resources.db.params.dbname = “NOME DO BANCO DE DADOS”
resources.db.params.password = “SENHA DO BANCO DE DADOS”
resources.db.params.charset = “TIPO DE CODIFICAÇÃO DO BANCO (EX.: utf8)”
resources.db.params.isDefaultTableAdapter = true

MS SQL SERVER

resources.db.adapter = “PDO_MSSQL”
resources.db.params.pdoType = “dblib”
resources.db.params.host = “ENDEREÇO DO SERVIDOR”
resources.db.params.username = “LOGIN DO BANCO DE DADOS”
resources.db.params.dbname = “NOME DO BANCO DE DADOS”
resources.db.params.password = “SENHA DO BANCO DE DADOS”
resources.db.isDefaultTableAdapter = “true”

PostGreSQL

resources.db.adapter = “PDO_PGSQL”
resources.db.params.host = ” ENDEREÇO DO SERVIDOR”
resources.db.params.username = “LOGIN DO BANCO DE DADOS”
resources.db.params.dbname = “NOME DO BANCO DE DADOS”
resources.db.params.password = ” SENHA DO BANCO DE DADOS”
resources.db.isDefaultTableAdapter = true

Exemplo

Gostaria de ver um exemplo real? Veja abaixo como o código foi desenvolvido para se conectar ao banco de dados MySQL:

Zend framework - conectando-se com um banco de dados

Para capturar os dados dessa conexão criada, basta utilizar o comando abaixo que pode ser empregado em qualquer classe do controlador IndexController.php localizado no caminho application/controllers/ :

$db = Zend_Db_Table::getDefaultAdapter();

IMPORTANTE: O comando acima funcionará a partir da versão 1.8 do zend framework e é essencial o uso do parâmetro ”’resources.db.isDefaultTableAdapter = "true" no arquivo "application.ini"

Possíveis erros de conexão

Zend framework - conectando-se com um banco de dados

Esse tipo de erro é muito comum ocorrer para versões inferiores a 1.8 que utilizam o comando Zend_Db_Table::getDefaultAdapter(); para conectar-se ao banco de dados. Nesses casos a solução pode ser dada por meio de uma conexão através da Factory, aplicado em qualquer classe de seu controlador. Veja os exemplos a seguir:

Factory MySQL

Zend framework - conectando-se com um banco de dados

Factory MS SQL Server

Zend framework - conectando-se com um banco de dados

Factory PostGreSQL

Zend framework - conectando-se com um banco de dados

Para maiores informações, veja a documentação da classe Zend_Db_Adapter no site oficial do Zend Framework.

Veja também



PDO(PHP Data Objects) é um módulo de PHP montado sob o paradigma Orientado a Objetos e cujo objetivo é prover uma padronização da forma com que PHP se comunica com um banco de dados relacional. Este módulo surgiu a partir da versão 5 de PHP. PDO, portanto, é uma interface que define um conjunto de classes e a assinatura dos métodos de comunicação com uma base de dados.


Por que usar PDO?

Antes da chegada do PDO, a linguagem PHP oferecia suporte à comunicação com diferentes modelos de SGBD através de módulos específicos. A maioria deles provia uma biblioteca de funções e utilizava um resource para representar a conexão e outro para representar um resultset (o resultado de uma consulta). As operações eram feitas sobre as variáveis de resource.

Cada driver implementava suas operações conforme imaginavam ser mais adequados. Embora alguns deles tivessem um funcionamento semelhante, a ordem dos parâmetros nem sempre era a mesma e podia causar uma certa confusão entre programadores.

Como conectar a um banco MySQL usando PDO

Testando a conexão

  <?php   $banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password')or print (mysql_error());   print "Conexão Efetuada com sucesso!";   ?>

Incluir dados

  <?php   $banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');   $novo_cliente = array('nome'=>'José','departamento'=>'TI','unidade'=>'Paulista');   $banco->prepare('INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)')->execute($novo_cliente);   ?>


Pesquisando dados em base MySQL utilizando querys simples e stored procedures

Neste exemplo, é possível efetuar pesquisas em bases MySQL utilizando querys e stored procedures. Lembrando que para evitar conflitos, teste sua procedure antes de implementá-la em sua aplicação.

Arquivo: ProcedurePDO.php

<?php   //Dados de acesso $host = "Nome_do_Host"; $dbn  = "Nome_da_Base"; $user = "Nome_do_Usuário"; $pass = "Senha_da_Base";   $tabela = "Nome_da_Tabela";   try {  //Conectar  $ligacao = new PDO("mysql:dbname=$dbn; host=$host", $user, $pass);  $ligacao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    //Em caso de pesquisas, via procedures  //$pesq = "";  //$sql = "CALL Nome_da_procedure()";    //Em caso de querys  $pesq = "Nome_do_Campo";  $sql = "SELECT * FROM $tabela WHERE nome= :nome_param";    $resultados = $ligacao->prepare($sql);    //Definição de parâmetros  $resultados->bindParam(":nome_param", $pesq, PDO::PARAM_STR);  $resultados->execute();    echo'<p>'.$sql.'</p><hr>';    foreach($resultados as $linha)  {   echo '<p>';   //Nome do campo na tabela pesquisada   echo $linha["Nome_da_Coluna"];   echo '</p>';  }    echo '<hr><p>Resultados: '.$resultados->rowCount().'</p>';    //Desconectar  $ligacao = null; } catch(PDOException $erro) {  echo $erro->getMessage(); }   ?>


Como conectar a um banco SQL Server usando PDO

Este exemplo funciona na versão 5.2 do PHP. Para utilização em servidores Windows 2008, há de alterar a versão do php via web.config tendo em vista que a versão padrão em windows 2008 é a PHP 5.3.

Arquivo: PDO_SQLserver.php

<?php try {     $hostname = "sqlserver01.bancodedados.com";     $dbname = "nomebanco";     $username = "nomebanco";     $pw = "senha";     $pdo = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");   } catch (PDOException $e) {     echo "Erro de Conexão " . $e->getMessage() . "/n";     exit;   }       $query = $pdo->prepare("select Coluna FROM nome_tabela");       $query->execute();         for($i=0; $row = $query->fetch(); $i++){         echo $i." - ".$row['Coluna']."<br/>";       }         unset($pdo);        unset($query); ?>

Arquivo: PDO_SQLserver.php

<?php try {     $hostname = "sqlserver01.bancodedados.com";     $dbname = "nomebanco";     $username = "nomebanco";     $pw = "senha";     $pdo = new PDO ("dblib:host=$hostname;dbname=$dbname","$username","$pw");   } catch (PDOException $e) {     echo "Erro de Conexão " . $e->getMessage() . "/n";     exit;   }       $query = $pdo->prepare("select Coluna FROM nome_tabela");       $query->execute();         for($i=0; $row = $query->fetch(); $i++){         echo $i." - ".$row['Coluna']."<br/>";       }         unset($pdo);        unset($query); ?>

Veja também



Obter 2ª via de Boleto.

Detalhamento de fatura.

Reative seus serviços.

Aplicativo Central do Cliente Zend framework - conectando-se com um banco de dados