Para quem adora padronização e organização, no MySQL existe o recurso chamado Prepared Statements.
Imagine a seguinte situação: você precisa criar uma procedure que faça todas as consultas em todas as entidades do seu banco e outra que apenas inserções e assim por diante… Uma para cada DML (data manipulation language) tudo passando por parametros, esse é o statement prepare.
Resumidamente você prepara a query antes de executa-lá no banco de dados, então vamos colocar a mão na massa e mostrar esse recurso.
Criando o usuário
O primeiro passo é criar um usuário no banco de dados que tenha permissão para executar rotinas. Eu que trabalho sempre com stored procedures utilizo apenas o EXECUTE, mas se você trabalha com DMLs diretas nas aplicações, pode criar diversas permissões ou um usuário com todos os privilégios (ALL PRIVILEGES).
Segue abaixo o exemplo de EXECUTE:
Segue abaixo o exemplo de um ALL PRIVILEGES:
ESSES FORAM OS COMANDOS PARA CRIAR UM USUARIO:
GRANT – CRIA USUARIO
EXECUTE – EXECUTA APENAS ROTINAS
ALL PRIVILEGES – PERMITE EXECUTAR TUDO NO BANCO DE DADOS
*.* – O PRIVILEGIO APLICA-SE A TODAS AS BASES
IDENTIFIED BY – É A SUA SENHA
WITH GRANT OPTION – O USUARIO PODE CRIAR DIVERSOS USUARIOS E CONCEDER PRIVILEGIOS A ELE.
Sinceramente eu aconselho trabalhar com o EXECUTE. Com ele é difícil de tentarem injection sql.
Agora que criamos o usuario layo.azevedo@localhost vou criar uma procedure com a função de executar qualquer select no MySQL, começando com o delimitador do código para não parar quando o MySQL achar o sinal de ‘;’ (ponto vírgula):
Dentro do DELIMITER colocamos a procedure com o nome de SelectGeral com três parâmetros: nome da tabela, condição e valor:
1 – Chamarei tabela de p_tabela, condição de p_condicao e valor de p_valor (lembre-se que o MySQL é fortemente tipado então coloque o tipo se é VARCHAR, CHAR, INT, etc…)
Proximo passo é criar uma variável para executar a query dentro do banco. Nesse caso usaremos o SET juntamente com o comando CONCAT para concatenarmos os dados.
O último passo é executar a variável:
Pronto criamos a procedure SelectGeral com o Prepared Statements. Para visualizar basta executar o seguinte comando:
Ou seja seria essa query = SELECT * from usuario WHERE nome = ‘layo.azevedo’
Esse foi um exemplo bem básico, mostrando o caminho das pedras para iniciantes que tenham alguma dúvida sobre Prepared Statements.