Alura > Cursos de Back-end > 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 Back-end, ou leia nossos artigos de Back-end.

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