/* Este post é continuação do Usando o Zend_Db para conectar no MySql */
Vimos no post anterior que para se conectar com banco de dados através do Zend_Db é necessário configuração através do o Zend_Config. Mais neste mesmo post somente mostrei como conectar e usar sintaxes de MySql. Mais se seu sistema ser multi-banco terá que abstrair as consultas de modo que o próprio Zend faça o trabalho de criar as Querys.
É ai que entra o Zend_Db_Select que faz o trabalho de criar as querys conforme o banco de dados selecionado. Então a conexão continua igual a anterior, conforme abaixo:
<?php require_once 'Zend/Config.php'; require_once 'Zend/Db.php'; $params ['host'] = 'localhost'; $params ['dbname'] = 'zendbrasil'; $params ['username'] = 'root'; $params ['password'] = ''; $database ['adapter'] = 'Mysqli'; $database ['params'] = $params; $data ['database'] = $database; $config = new Zend_Config ( $data ); $db = Zend_Db::factory($config->database);
Vamos agora pensar no mesmo exemplo que tínhamos, mais agora migrar do fetchAll para o select.
<?php $sql = "SELECT * FROM `teste` "; $result = $db->fetchAll($sql);
A sintaxe básica do select é:
<?php // Criar uma instancia do Zend_Db_Select $select = $db->select(); // Adicionando a cláula from $select->from( ...tabelas e colunas... ) // Os critéros $select->where( ...critérios... ) // A Ordem $select->order( ...Ordem da resposta... ); Entãa consulta acima fica assim: $select = $db->select(); $select->from('teste'); $stmt = $select->query(); $result = $stmt->fetchAll();
Agora podemos apenas alterando o Zend_Config conectar fazer esta consulta em qualquer banco de dados que o Zend_Db tenha suporte.
O método $select->query(); retorna o sql montada segundo os padrões.
Veja parte do print_r do $stmt:
Zend_Db_Statement_Mysqli Object ( [_keys:protected] => Array ( [0] => USUARIO_ID [1] => USUARIO_NOME ) [_values:protected] => Array ( [0] => 4 [1] => Usuario 4 ) .................... [_sqlSplit:protected] => Array ( [0] => SELECT `teste`.* FROM `teste` ) [_sqlParam:protected] => Array ( [0] => SELECT `teste`.* FROM `teste` ) )
Então nela executamo o método fetchAll() que retorna a consulta.
<?php require_once 'Zend/Config.php'; require_once 'Zend/Db.php'; $params ['host'] = 'localhost'; $params ['dbname'] = 'zendbrasil'; $params ['username'] = 'root'; $params ['password'] = ''; $database ['adapter'] = 'Mysqli'; $database ['params'] = $params; $data ['database'] = $database; $config = new Zend_Config ( $data ); $db = Zend_Db::factory($config->database); $select = $db->select(); $select->from('teste'); $stmt = $select->query(); $result = $stmt->fetchAll(); print_r($result);
A resposta será:
Array ( [0] => Array ( [USUARIO_ID] => 1 [USUARIO_NOME] => Usuario 1 ) [1] => Array ( [USUARIO_ID] => 2 [USUARIO_NOME] => Usuario 2 ) [2] => Array ( [USUARIO_ID] => 3 [USUARIO_NOME] => Usuario 3 ) [3] => Array ( [USUARIO_ID] => 4 [USUARIO_NOME] => Usuario 4 ) )