Alura > Cursos de Programação > Cursos de PHP > Conteúdos de PHP > Primeiras aulas do curso PHP e PDO: trabalhando com bancos de dados

PHP e PDO: trabalhando com bancos de dados

Introdução ao PDO - Introdução

Boas vindas ao curso PHP e PDO: Trabalhando com Banco de Dados!.

Sou o instrutor Vinícius Dias e iniciaremos de forma bastante simples, apenas descobrindo se conseguimos nos conectar ou não.

Para não precisarmos nos preocupar com infraestrutura, utilizaremos um banco de dados em SQLite a princípio.

Conheceremos a maneira de executar o SQL para inserir um aluno e de trazer os dados.

Encontraremos alguns problemas relacionados à segurança por exemplo, e precisaremos aprender como nos defender de ataques de SQL Injection. Com isso, veremos os prepare statement.

Observaremos as diferenças entre bindParam() e bindValue() para sabermos quando utilizar cada um baseado em suas peculiaridades.

Quando abordarmos as boas práticas de programação, criaremos um repositório e implementaremos utilizando PdoStudentRepository.

Neste repositório de alunos, falaremos bastante sobre as formas de trazer e buscar dados com os Fetch Mode e Fetch Style.

Separaremos a criação de nossa conexão em uma classe específica, e veremos os parâmetros que o PDO aceita, o controle de transações e o tratamento de erros também.

Ao final, além de aprendermos o relacionamento entre várias tabelas e performance, abordaremos a migração de SQLite para o MySQL de forma bastante simples e fácil, haja vista que o PDO nos traz essa facilidade.

Vamos lá!

Introdução ao PDO - Preparando o ambiente

Começaremos pela configuração do ambiente.

O primeiro passo é instalar pelo menos a versão 7.4 PHP por meio deste link.

Feito isso, precisaremos de extensões do PHP para trabalharmos com uma conexão com o banco de dados. Em ambientes Unix, o PDO e o driver que se conecta com SQLite já estão habilitados por padrão, então poderemos prosseguir.

Caso estejamos em um Windows, passaremos por outra etapa; o PDO também é habilitado por padrão, mas também habilitaremos a extensão específica do banco de dados que usaremos, conforme a documentação deste endereço.

Com usaremos o SQLite neste treinamento, precisaremos encontrar o arquivo php.ini escrevendo php --ini no console para mostrar sua localização.

Entrando nesta pasta, abriremos o php.ini. Caso tenhamos acabado de baixar o PHP e ainda não temos este arquivo, há outro chamado php.ini-development que deverá ser renomeado para php.ini somente.

O abriremos e utilizaremos o atalho "Ctrl + F" para buscar por pdo_sqlite com qualquer editor de texto adequado, e neste caso usaremos o PhpStorm. Com isso, encontraremos a linha ;extension=pdo_sqlite e bastará retirarmos o ; para salvarmos o arquivo com este mesmo nome.

Feito isso, estaremos com as extensões do PHP habilitadas e configuradas para darmos continuidade ao treinamento.

Portanto, já temos o PHP instalado e o driver específico do banco de dados que usaremos.

O próximo passo é utilizar o Composer por meio deste link e seguir suas instruções de download. Aqui na Plataforma Alura, há conteúdos sobre este gerenciador de pacotes, mas só o utilizaremos como autoloader pois não usaremos dependências externas.

Precisaremos do Composer para pegar o projeto inicial e fazer com que funcione mesmo não tendo praticamente nada, apenas o autoloader que queremos.

Com tudo instalado e configurado, poderemos prosseguir para vermos o que são os drivers de conexão com o PHP.

Introdução ao PDO - Primeira conexão

Neste passo, falaremos sobre o que faremos neste treinamento.

Primeiro, veremos o que há em nosso projeto inicial disponibilizado anteriormente. O arquivo projeto-inicial.php só está fazendo um require no autoload.php e instanciando a classe Student().

É importante termos o hábito de desenvolver em inglês para que possamos incentivar a pesquisa da comunidade neste idioma.

Por enquanto, estamos apenas exibindo sua idade com age() ao rodar o código.

Veremos um $id na classe Student, pois é interessante que consigamos identificar o registro de maneira única sempre que salvamos algo no banco de dados.

Poderíamos utilizar RG ou CPF como identificação também, mas utilizaremos $id por ser mais fácil, prático e muito comum em projetos PHP.

Além disso, todo aluno possui um nome e uma data de nascimento. No construtor, receberemos esses valores e teremos os Getters ainda não utilizados.

Para termos uma regra de negócios, há o método que calcula a idade do estudante. Neste link, poderemos acessar uma publicação do blog da Alura sobre a manipulação de datas com PHP, caso seja necessário aprofundar o assunto.

Como não precisaremos nos atentar a este detalhe imediatamente, nosso foco será a persistência da classe simples Student no banco de dados, passando a salvar os registros de alunos da Alura.

Conforme já comentado, utilizaremos um banco SQLite neste treinamento. É um tipo de database onde não precisaremos de uma infraestrutura e nem de um servidor, pois nos conectaremos a um banco de dados que simplesmente está em um arquivo.

Em contrapartida, há muito menos recursos, e é justamente por isso que não é muito comum encontrarmos projetos utilizando SQLite, principalmente na web. Portanto, começaremos com este banco por conta de sua simplicidade.

O PDO é a forma com a qual acessamos um banco de dados. Porém, para sabermos como fazer a conexão e as chamadas SQL e API específicas, precisaremos de um driver.

Existem vários drivers disponíveis para vários databases bastante conhecidos, e neste endereço teremos os links para esses acessos.

Clicaremos em "SQLite(PDO)" para acessarmos sua documentação. Utilizando essa extensão e esse driver, poderemos nos conectar a um arquivo de banco de dados em SQLite.

Cientes disso, começaremos a trabalhar com o PDO. De volta ao PhpStorm, criaremos um novo arquivo clicando com o botão direito sobre "curso-pdo" para selecionar "New > PHP File" e nomear como conexao.php.

Como queremos fazer a conexão, precisaremos deste arquivo com o banco de dados. No mesmo diretório "curso-pdo", clicaremos com o botão direito do mouse novamente para escolher "New > File" e inserir o nome banco.sqlite.

Este estará vazio pois se trata de um arquivo de texto mesmo. Com isso, já poderemos tentar nos conectar à este para executar algo e fazermos um teste.

Em conexao.php, chamaremos de $pdo para instanciar um novo PDO(), sendo a mesma classe utilizada para fazer a conexão.

O PDO() aceita até três parâmetros; o primeiro é o que chamamos de string de conexão, a qual informará qual é o driver utilizado e os detalhes específicos de cada banco de dados separados por :. Caso seja MySQL, informaremos o host, o dbname e etc., mas como se trata de SQLite, bastará informarmos apenas o caminho para o database: banco.sqlite.

Como segundo e terceiro parâmetros, também aceitaria $usuario, $senha e outros extras com []. Mas não os adicionaremos por enquanto, pois o SQLite é um arquivo que não necessitará dessas informações e nos permitirá começarmos da forma mais simples.

Caso o PDO() não consiga se conectar com o banco de dados, um erro será exibido. E se conseguir, significará que está funcionando.

Portanto, só exibiremos o 'Conectei' com echo e executaremos o código de conexao.php.

<?php

$pdo = new PDO('sqlite:banco.sqlite');

echo 'Conectei';

Estando aparentemente tudo funcionando, teremos nossa primeira conexão com o banco de dados, o qual está vazio por enquanto.

A seguir, criaremos uma tabela para começarmos a executar as querys e nosso sistema.

Sobre o curso PHP e PDO: trabalhando com bancos de dados

O curso PHP e PDO: trabalhando com bancos de dados possui 166 minutos de vídeos, em um total de 78 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda PHP acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas