23 jan 2014
Consulta simples utilizando PDO no PHP
![pdo-simples](http://devwilliam.com.br/wp-content/uploads/2014/01/pdo-simples.png)
Para esse artigo será utilizado a classe de conexão no padrão singleton que foi postado em um artigo anterior, nesse link classe de conexão PDO.
Uma vez que já temos configurada uma conexão com o banco de dados é bem simples executar um SELECT na tabela, para esse exemplo estamos simulando a seguinte estrutura de tabela:
1 2 3 4 5 6 7 8 9 10 11 |
CREATE TABLE `TAB_USUARIO` ( `USU_ID` int(4) NOT NULL AUTO_INCREMENT, `USU_MATRICULA` char(10) NOT NULL, `USU_NOME` varchar(60) NOT NULL, `USU_PRIVILEGIO` varchar(20) NOT NULL, `USU_DEPARTAMENTO` varchar(45) NOT NULL, `USU_SENHA` varchar(20) NOT NULL, `USU_EMAIL` varchar(60) NOT NULL, `USU_DATA_HORA` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`USU_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; |
Segue abaixo o código PHP para consulta:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php require_once 'conexao.php'; $pdo = Conexao::getInstance(); $sql = "SELECT * FROM TAB_USUARIO"; $stm = $pdo->prepare($sql); $stm->execute(); $dados = $stm->fetchAll(PDO::FETCH_OBJ); foreach($dados as $reg): echo 'Matrícula: ' . $reg->USU_MATRICULA . ""; echo 'Nome: ' . $reg->USU_NOME . ""; echo 'Email: ' . $reg->USU_EMAIL . ""; echo 'Privilégio: ' . $reg->USU_PRIVILEGIO . ""; endforeach; ?> |
Agora vamos as explicações:
1- Inicialmente estou atribuindo uma conexão válida a variável $pdo através do método estático getInstance(), essa classe já foi explicada anteriormente em outro artigo.
1 |
$pdo = Conexao::getInstance(); |
2 – Atribui uma instrução SQL de consulta simples para variável $sql.
1 |
$sql = "SELECT * FROM TAB_USUARIO"; |
3 – Solicita ao PDO que prepare essa instrução SQL, o retorno caso seja bem sucedido será um objeto PDOStatement, caso ocorra um erro será retornado FALSO ou um objeto PDOException.
Essa prática tem várias vantagens talvez a mais importante seja evitar ataques de SQL INJECT, dessa maneira também não é necessário passar os parâmetros para condições WHERE manualmente, nesse exemplo não estamos passando parâmetros.
1 |
$stm = $pdo->prepare($sql); |
4 – Executa a instrução SQL.
1 |
$stm->execute(); |
5 – O retorno é atribuído a variável $dados, na forma de uma array de objetos, por isso é passado o parâmetro PDO::FETCH_OBJ.
1 |
$dados = $stm->fetchAll(PDO::FETCH_OBJ); |
6 – Por último os dados são exibidos usando um loop foreach() para percorrer a array $dados, observem que para acessar o conteúdo dos campos temos que usar ‘->’ sinal de acesso a atributos e métodos de um objetos, esse sinal é necessário porque solicitamos que o retorno da consulta fosse passado para variável $dados na forma de uma array de objetos.
1 2 3 4 5 6 |
foreach($dados as $reg): echo 'Matrícula: ' . $reg->USU_MATRICULA . ""; echo 'Nome: ' . $reg->USU_NOME . ""; echo 'Email: ' . $reg->USU_EMAIL . ""; echo 'Privilégio: ' . $reg->USU_PRIVILEGIO . ""; endforeach; |
Talvez inicialmente muitos possam achar complexo, mas eu garanto que tudo na vida é questão de costume, utilizar PDO em aplicações WEB pode trazer flexibilidade, velocidade e segurança também.
No próximo artigo vamos executar uma consulta passando parâmetros na prática.
Bom pessoal até a próxima ….