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á!
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.
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.
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.