Consulta PDO com passagem de parâmetros no PHP

parametrosOlá pessoal, hoje vamos falar um pouco mais sobre consultas com PDO mas agora com passagem de parâmetros para instrução SQL. Anteriormente nesse artigo consulta simples com PDO expliquei como executar uma instrução SQL simples.
 
 
 
 
 

 Vamos utilizar essa estrutura de tabela para nosso exemplo:

Nesse exemplo vamos simular a validação de e-mail e senha, ou seja, teremos que passar esse parâmetros para nossa instrução SQL.

Abaixo o código PHP:

Mais uma vez está sendo utilizado a classe singleton de conexão apresentada nesse artigo classe de conexão PDO.
 
Vamos as explicações:
 
1 – Para efeito de teste está sendo atribuído os valores do e-mail e senha para as respectivas variáveis $email e $senha, em um ambiente normal esses valores seriam enviados pelo formulário de login através de métodos POST ou GET.

 

Post relacionado:  Inclusão - Sistema de Cadastro com PHP + PDO e MySQL

2 – A variável $pdo recebe uma instância da conexão PDO já configurada.

 
3 – É atribuído a variável $sql uma instrução SQL de consulta que tem como objetivo verificar se no banco existe um registro com e-mail e senha iguais ao passados como parâmetro. Observem que está sendo utilizado no lugar dos parâmetros 2 sinais de interrogação ‘?’, dessa maneira o PDO entende que deverá substituir esses símbolos pelos valores dos parâmetros que serão passados posteriormente, nessa instrução email e senha.

 
4 – 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.

 
5 – Os parâmetros são passados para a variável $stm (objeto PDOStatement) através do método bindValue(), notem que não é necessário efetuar nenhum tipo de verificação nos parâmetros tais como, caracteres especiais que possam burlar a segurança, mais conhecidos como SQL Injection, pois o próprio PDO internamente executa essas verificações.
Outro ponto que merece destaque, os parâmetros são passados na mesma ordem em que aparecem os pontos de interrogação ‘?’ na instrução SQL, ou seja, primeiro o $email e depois a $senha, obrigatoriamente tem que ser informado um índice numérico identificando a cardinalidade do parâmetro. Opcionalmente pode-se passar também o tipo de dado do parâmetro, exemplo (1, $email, PDO::PARAM_STR) dessa maneira estamos informando que o tipo de dado passado como parâmetro é STRING, mais informações aconselho uma leitura na documentação oficial do bindValue() no PDO. 

Post relacionado:  Aprenda como ler arquivos XML com PHP

 

6 – Executa a instrução SQL.

 

7 – A função rowCount() captura a quantidade de registros retornado pela instrução SQL e atribui para variável $total_registros.

 

8 – Para finalizar é verificado se a quantidade de registros retornados é igual a zero ‘0’, caso verdadeiro significa que não foi encontrado na tabela um usuário com os mesmos dados de e-mail e senha, então é exibida uma mensagem ‘Usuário ou Senha inválido!’. Senão se a quantidade de registros for maior que zero ‘0’ então existe um usuário com os mesmo dados de e-mail e senha, nesse caso é exibida uma mensagem ‘Usuário validado com sucesso!’.

 

Demonstrei nesse artigo como executar consultas passando parâmetros via PDO no PHP, nesse exemplo utilizei uma validação bem básica de e-mail e senha, mas já foi possível observar a facilidade de não se preocupar com validações nos dados enviados como parâmetros para a instrução SQL.

Bom pessoal até a próxima ….

Tags:
Show Buttons
Hide Buttons