PDO (PHP Data Objects)

Documentos relacionados
Desenvolvimento de Aplicações para Internet Aula 8

Desenvolvimento de Aplicações para Internet Aula 9

Conceitos de OO AUTOLOAD. <?php function autoload($class_name) { require_once $class_name. '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2();?

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Proposta de calendário - Comissão Permanente de Ensino

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

DATA ACCESS OBJECT (DAO)

Desenvolvimento de Aplicações para Internet Aula 7

ProgramaTchê programatche.net Programação OO com PHP

Programação Orientada a Objetos II

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

Como criar um banco de dados usando o mysql

Java - Conexão ao Banco de Dados usando JDBC

Conexão com Banco de Dados, Inserção, exclusão e atualização de registros

Tutorial SQL Server 2014 Express

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Padrões de Projeto e Persistência com DAO

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

P redigl o bal Pesquisa de Imóveis D o c u m e n t o d e I m p l e m e n t a ç ã o d e M ó d u l o s

Recursos avançados e Orientação a Objetos no PHP

C A P I T U L O 10 F U N Ç Õ E S I N T E R N A S P H P P A R A B A N C O D E D A D O S

JPA Java Persistence API. Prof. Ramon Chiara

PHP Programando com Orientação a Objetos

Desenvolvimento Web II

Exercícios de fixação: Listas

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Programação Orientada a Objectos e Acesso a Dados com PHP

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

TECNOLOGIA WEG II PHP com SGBD MYSQL

Conceitos de Orientação a Objetos

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Acesso a banco de dados

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

PHP INTEGRAÇÃO COM MYSQL PARTE 2

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

UFG - Instituto de Informática


Java na WEB Banco de Dados

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Disciplina: Banco de Dados Tema: SQL Parte 2

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

Desenvolvimento de Sistemas Web Prof. Leandro Roberto. Aula 18 JavaScript: Eventos MySQL PHP (insert, update e delete)

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Prova de pré-requisito

Sistemas de Informação

Conexão genérica com banco de dados

José Antônio da Cunha

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Sumário. Capítulo 1 O que é o PHP? Capítulo 2 Instalação do PHP Capítulo 3 Noções básicas de programação... 25

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

Lidando com Armazenamento de Dados

Aplicabilidade: visão geral

Coletando dados utilizando a API do Zabbix com PHP e JSON

Aplicações WEB - Cliente Servidor

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

ANÁLISE E PROJETO DE BANCO DE DADOS

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

MONTANDO UMA CONSULTA COM FILTROS. Vamos criar uma tela que gere uma relação de dados, escolhendo a ordenação e um filtro.

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Java DataBase Connectivity - JDBC. Ramon Lopes Embaixador de Campus Sun - UFBA

Armazenamento de dados

Criação Pagina PHP & MySQL

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Aula Prática JBCD - Introdução

Faça Fácil Proficy Historian e SQL Linked Server

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Proficy Historian e SQL Linked Server

Programação Web Prof. Wladimir

PROFICY HISTORIAN E SQL LINKED SERVER

Faça Fácil. Proficy Historian e SQL Linked Server

<html> <body> <h1>pesquisar livros no acervo</h1> <form action="buscalivro.php" method="post">

IMPLEMENTAÇÃO DE BANCO DE DADOS

Treinamento em PHP. Aula 7. Ari Stopassola Junior

Linguagem SQL - Structured Query Language

Módulo III Arquitetura em Camadas

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Oracle Comandos para Processamento de Transações

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

4ª Edição Pablo Dall Oglio

Introdução ao Sistema. Características

Triggers em SQLite. Fernando Lobo. Base de Dados, Universidade do Algarve

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Linguagem SQL - Structured Query Language

Desenvolvimento orientado a objetos com PEAR: DB/MDB2, DB_DataObject, HTML_QuickForm e DB_DataObjectFormBuilder

Marcos Alexandruk Marcos Alexandruk

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Transcrição:

PDO (PHP Data Objects) Reuso e a segurança PDO é uma classe desenvolvida para trabalhar com procedimentos relacionados a Banco de Dados. PDO oferece segurança extra. Os recursos oferecidos são suficiente para trabalhar implementando toda nossa aplicação sem nos preocuparmos com qual banco estamos utilizando, e que uma mudança posterior na escolha do banco não trará grandes mudanças na aplicação. É necessário implementar um padrão de projeto que implemente o conceito de multicamadas, onde o principal objetivo é separar a camada de dados do restante da aplicação. Separando a aplicação em camadas, e utilizando o PDO adequadamente, teremos a receita perfeita de uma aplicação bem estruturada. Configurando o PDO Listagem 1: Habilitando PDO no Linux extension=pdo.so extension=pdo_mysql.so extension=pdo_pgsql.so extension=pdo_sqlite.so Listagem 2: Habilitando PDO no Windows extension=php_pdo.dll extension=php_pdo_mysql.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll

Os exemplos que se seguem utilizam o padrão de projeto MVC (Model View Controller), que separa a camada de apresentação (view), a camada de controle/regra de negócios (controller) e a camada de dados (model, onde ficam os comandos SQL). Um arquivo de conexão com o banco em PDO será o ponto de conexão da aplicação com o banco. Listagem 3: Arquivo conexao.php <?php class Conexao { public static $instance; private function construct() { // public static function getinstance() { if (!isset(self::$instance)) { self::$instance = new PDO('mysql:host=localhost;dbname=minhabasededados', 'root', 'vertrigo', array(pdo::mysql_attr_init_command => "SET NAMES utf8")); self::$instance->setattribute(pdo::attr_errmode, PDO::ERRMODE_EXCEPTION); self::$instance->setattribute(pdo::attr_oracle_nulls, PDO::NULL_EMPTY_STRING); return self::$instance;?> POJO é o espelho da tabela em objetos. Listagem 4: Classe POJO Usuário <?php class PojoUsuario { private $cod_usuario; private $nome; private $email; private $senha; private $ativo; private $perfil;

public function getcod_usuario() { return $this->cod_usuario; public function setcod_usuario($cod_usuario) { $this->cod_usuario = $cod_usuario; public function getnome() { return $this->nome; public function setnome($nome) { $this->nome = $nome; public function getemail() { return $this->email; public function setemail($email) { $this->email = strtolower($email); public function getsenha() { return $this->senha; public function setsenha($senha) { $this->senha = strtolower($senha); public function getativo() { return $this->ativo; public function setativo($ativo) { $this->ativo = strtolower($ativo); public function getperfil() { return $this->perfil; public function setperfil($perfil) { $this->perfil = $perfil;?> A classe DAO será responsável por realizar as consultas, inserções, deleções e edições no banco. O DAO é responsável por realizar processos no banco e retornar POJOs (se necessários) para a camada de controle. O nosso DAO implementa um padrão de projetos chamado Singleton, que em resumo faz que com que o objeto seja criado apenas uma vez na memória.

Listagem 5: DAO para a Classe Usuario <?php require_once CAMINHO_RAIZ. "admin/conexao.php"; require_once CAMINHO_RAIZ. "admin/geralog.php"; require_once CAMINHO_RAIZ. "admin/entity/perfil/controller_perfil.php"; require_once "pojo_usuario.php"; class DaoUsuario { public static $instance; private function construct() { // public static function getinstance() { if (!isset(self::$instance)) self::$instance = new DaoUsuario(); return self::$instance; public function Inserir(PojoUsuario $usuario) { $sql = "INSERT INTO usuario ( nome, email, senha, ativo, cod_perfil) VALUES ( :nome, :email, :senha, :ativo, :cod_perfil)"; $p_sql->bindvalue(":nome", $usuario->getnome()); $p_sql->bindvalue(":email", $usuario->getemail()); $p_sql->bindvalue(":senha", $usuario->getsenha()); $p_sql->bindvalue(":ativo", $usuario->getativo()); $p_sql->bindvalue(":cod_perfil", $usuario->getperfil()- >getcod_perfil()); catch (Exception $e) { GeraLog::getInstance()->inserirLog("Erro: Código: ". $e-> public function Editar(PojoUsuario $usuario) { $sql = "UPDATE usuario set nome = :nome,

email = :email, senha = :senha, ativo = :ativo, cod_perfil = :cod_perfil WHERE cod_usuario = :cod_usuario"; $p_sql->bindvalue(":nome", $usuario->getnome()); $p_sql->bindvalue(":email", $usuario->getemail()); $p_sql->bindvalue(":senha", $usuario->getsenha()); $p_sql->bindvalue(":ativo", $usuario->getativo()); $p_sql->bindvalue(":cod_perfil", $usuario->getperfil()-> getcod_perfil()); $p_sql->bindvalue(":cod_usuario", $usuario->getcod_usuario()); catch (Exception $e) { public function Deletar($cod) { $sql = "DELETE FROM usuario WHERE cod_usuario = :cod"; $p_sql->bindvalue(":cod", $cod); catch (Exception $e) { public function BuscarPorCOD($cod) { $sql = "SELECT * FROM usuario WHERE cod_usuario = :cod"; $p_sql->bindvalue(":cod", $cod); $p_sql->execute(); return $this->populausuario($p_sql->fetch(pdo::fetch_assoc)); catch (Exception $e) { private function populausuario($row) { $pojo = new PojoUsuario; $pojo->setcod_usuario($row['cod_usuario']); $pojo->setnome($row['nome']); $pojo->setemail($row['email']); $pojo->setsenha($row['senha']); $pojo->setativo($row['ativo']); $pojo->setperfil(controllerperfil::getinstance()- >BuscarPorCOD($row['cod_perfil'])); return $pojo;

?> Listagem 6: Método DELETAR public function Deletar($cod) { $sql = "DELETE FROM usuario WHERE cod_usuario = :cod"; $p_sql->bindvalue(":cod", $cod); catch (Exception $e) { O PDO é criado no arquivo conexao.php, por isso utilizamos o código Conexao::getInstance()->prepare($sql ), é nesta linha que ao mesmo tempo que capturamos a instância do PDO da memória, já passamos a ele o SQL a ser preparado. O PDO irá pegar sua SQL e implementar os escapes necessários e segurança necessária. A única coisa que é necessário fazer é passar os parâmetros definidos no SQL com o método bindvalue e executar a Query com o método execute().