Trabalhando com Banco de Dados (MySQL e PDO) conectando o PHP 🐘 Etapa 10

 Seja muito bem-vindo à Academy Code Christ!


🌍 Academy Code Christ está disponível em vários idiomas.
Fique à vontade para usar o tradutor na Barra lateral (Sidebar) e aprender no seu idioma.

PHP 🐘 Etapa 10
Banco de Dados (MySQL e PDO)



📚 Continue sua jornada de aprendizado


A Academy Code Christ oferece trilhas de aprendizado em diferentes tecnologias. Explore os cursos, acompanhe as aulas e avance em sua jornada de conhecimento acessando os menus correspondentes:



💻 Pratique o que você aprende


🎯 Por Que Usar Banco de Dados


Até agora, todos os dados foram guardados apenas na memória (arrays, sessões, variáveis).


 Mas quando o servidor é reiniciado ou o usuário sai, tudo se perde.

É aí que o banco de dados entra:


 um grande repositório que guarda as informações de forma organizada e permanente, permitindo operações como:


●     Armazenar cadastros de usuários e produtos;

●     Gerar relatórios;

●     Buscar informações rápidas e filtradas;

●     Atualizar ou remover dados.


O PHP trabalha muito bem com bancos como MySQL, MariaDB, PostgreSQL, SQLite, entre outros.


 O mais comum e tradicional é o MySQL, usado amplamente em aplicações web.


Conceitos Básicos do MySQL


Antes de conectar, é importante entender a estrutura de um banco de dados.


●     Banco de dados: o conjunto completo (ex: loja, escola, sistema).

●     Tabela: uma coleção de registros semelhantes (ex: clientes, produtos).

●     Colunas (campos): atributos de cada registro (ex: nome, email, idade).

●     Linhas (registros): itens individuais (cada cliente ou produto).


Exemplo de tabela usuarios:

id

nome

email

senha

1

Ana

[email protected]

...

2

Paulo

[email protected]

...


Criando um Banco de Dados e Tabela


Acesse o phpMyAdmin (geralmente em localhost/phpmyadmin), e crie o banco:

CREATE DATABASE sistema;

USE sistema;

 

CREATE TABLE usuarios (

  id INT AUTO_INCREMENT PRIMARY KEY,

  nome VARCHAR(100),

  email VARCHAR(150),

  senha VARCHAR(255)

);

 

Pronto! Temos nossa base para começar.


Conectando o PHP ao MySQL usando PDO


O PDO (PHP Data Objects) é uma biblioteca que permite conexão segura e padronizada com o banco.


 É mais moderna que mysqli e facilita o uso com diferentes bancos no futuro.

<?php

$servidor = "localhost";

$banco = "sistema";

$usuario = "root";

$senha = "";

 

try {

    $conexao = new PDO("mysql:host=$servidor;dbname=$banco;charset=utf8", $usuario, $senha);

    $conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Conexão bem-sucedida!";

} catch (PDOException $erro) {

    echo "Erro: " . $erro->getMessage();

}

?>

 

Se tudo deu certo, o navegador deverá exibir “Conexão bem-sucedida!”.


Inserindo Dados no Banco


Criaremos uma página com formulário para registrar usuários.

form.html

<form method="POST" action="inserir.php">

  Nome: <input type="text" name="nome"><br>

  Email: <input type="email" name="email"><br>

  Senha: <input type="password" name="senha"><br>

  <input type="submit" value="Cadastrar">

</form>

 

inserir.php

<?php

include("conexao.php"); // arquivo contendo o código PDO anterior

 

$nome = $_POST["nome"];

$email = $_POST["email"];

$senha = password_hash($_POST["senha"], PASSWORD_DEFAULT); // Criptografia

 

$sql = "INSERT INTO usuarios (nome, email, senha) VALUES (:nome, :email, :senha)";

$stmt = $conexao->prepare($sql);

 

$stmt->bindParam(":nome", $nome);

$stmt->bindParam(":email", $email);

$stmt->bindParam(":senha", $senha);

 

$stmt->execute();

 

echo "Usuário cadastrado com sucesso!";

?>

 

🔒 Observe o uso de password_hash() e prepared statements — isso protege contra injeção de SQL, que é um dos ataques mais comuns em formulários.


Consultando Dados do Banco


Vamos exibir os usuários cadastrados.

listar.php

<?php

include("conexao.php");

 

$sql = "SELECT * FROM usuarios ORDER BY id DESC";

$stmt = $conexao->prepare($sql);

$stmt->execute();

 

$usuarios = $stmt->fetchAll(PDO::FETCH_ASSOC);

 

foreach ($usuarios as $u) {

    echo "ID: {$u['id']} - Nome: {$u['nome']} - Email: {$u['email']}<br>";

}

?>

 

Saída:

ID: 3 - Nome: João - Email: [email protected]

ID: 2 - Nome: Ana - Email: [email protected]

 

Os resultados vêm como um array associativo, facilitando manipulação e exibição.


Buscas com Filtros Dinâmicos


Suponha que o usuário queira procurar por nome:

<?php

include("conexao.php");

$busca = "%".$_GET["nome"]."%";

 

$sql = "SELECT * FROM usuarios WHERE nome LIKE :busca";

$stmt = $conexao->prepare($sql);

$stmt->bindParam(":busca", $busca);

$stmt->execute();

 

$resultados = $stmt->fetchAll(PDO::FETCH_ASSOC);

 

if ($resultados) {

    foreach ($resultados as $linha) {

        echo $linha["nome"] . " - " . $linha["email"] . "<br>";

    }

} else {

    echo "Nenhum usuário encontrado.";

}

?>

 

Com o operador SQL LIKE, você cria buscas semelhantes ao comportamento de filtros de sistemas reais.


Atualizando Registros


Para editar dados, basta usar o comando UPDATE.

<?php

include("conexao.php");

 

$id = 2;

$novoNome = "Carla Souza";

 

$sql = "UPDATE usuarios SET nome = :nome WHERE id = :id";

$stmt = $conexao->prepare($sql);

$stmt->bindParam(":nome", $novoNome);

$stmt->bindParam(":id", $id);

$stmt->execute();

 

echo "Registro atualizado com sucesso!";

?>

 

O uso de parâmetros nomeados (:nome, :id) evita erros e aumenta a segurança.


Excluindo Registros


Para apagar um registro:


<?php

include("conexao.php");

 

$id = $_GET["id"];

 

$sql = "DELETE FROM usuarios WHERE id = :id";

$stmt = $conexao->prepare($sql);

$stmt->bindParam(":id", $id);

$stmt->execute();

 

echo "Usuário removido!";

?>

 

⚠️ Nunca exclua dados diretamente sem segurança adicional — confirme a ação e proteja contra acessos indevidos.


Ligando Tudo — CRUD Completo


CRUD = Create, Read, Update, Delete
 Toda aplicação de cadastro segue esse padrão.
 

O fluxo ideal:

1.    form.html → cria novos registros (Create);

2.    listar.php → lê e exibe todos (Read);

3.    editar.php → edita registros (Update);

4.    excluir.php → remove registros (Delete).


Essas quatro operações formam a base de qualquer sistema de administração (painel, loja, CMS etc.).


Exemplo Resumido — Sistema de Cadastro


1️⃣ conexão.php

<?php

$servidor = "localhost";

$banco = "sistema";

$usuario = "root";

$senha = "";

 

try {

    $pdo = new PDO("mysql:host=$servidor;dbname=$banco;charset=utf8", $usuario, $senha);

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

    echo "Erro: " . $e->getMessage();

}

?>

 

2️⃣ inserir.php

include("conexao.php");

$nome = $_POST["nome"];

$email = $_POST["email"];

$senha = password_hash($_POST["senha"], PASSWORD_DEFAULT);

 

$stmt = $pdo->prepare("INSERT INTO usuarios (nome,email,senha) VALUES (?,?,?)");

$stmt->execute([$nome,$email,$senha]);

header("Location: listar.php");

 

3️⃣ listar.php

include("conexao.php");

$dados = $pdo->query("SELECT * FROM usuarios")->fetchAll(PDO::FETCH_ASSOC);

 

foreach ($dados as $u) {

    echo "{$u['nome']} - {$u['email']} | <a href='excluir.php?id={$u['id']}'>Excluir</a><br>";

}

 

4️⃣ excluir.php

include("conexao.php");

$id = $_GET["id"];

$stmt = $pdo->prepare("DELETE FROM usuarios WHERE id=?");

$stmt->execute([$id]);

header("Location: listar.php");

 

➡️ Em poucos arquivos você tem um sistema funcional de cadastro completo.


Lidando com Erros de Banco

Use try...catch para capturar exceções:

try {

    $stmt->execute();

} catch (PDOException $e) {

    echo "Erro ao executar: " . $e->getMessage();

}

 

Isso permite que o sistema falhe de forma controlada e informativa.


Padrão MVC (Model-View-Controller)


Conforme o sistema cresce, misturar HTML e SQL no mesmo arquivo torna tudo confuso.
 Por isso, separa-se o código em três camadas principais:


●     Model: lida com o banco de dados (funções PDO);

●     View: exibe o conteúdo (HTML, formulários, tabelas);

●     Controller: recebe ações do usuário e decide o que fazer.


Esse padrão é base para frameworks profissionais como Laravel e Symfony.


Segurança em Aplicações com Banco


Alguns pontos indispensáveis:


1.    Nunca concatenar variáveis diretamente em SQL.
 Use prepare() e bindParam().

2.    Criptografar senhas sempre com password_hash().

3.    Validar entradas do usuário antes de salvar.

4.    Limitar acessos: apenas usuários autenticados devem manipular registros.

5.    Fazer backups regulares do banco de dados.


A segurança de dados é tão importante quanto a lógica em si.


Conclusão 


Nesta etapa, você aprendeu:

●     Os conceitos fundamentais de bancos de dados (tabelas, registros, campos);

●     Como criar conexões seguras com o MySQL usando PDO;

●     Inserir, listar, pesquisar, atualizar e excluir registros;

●     Criar sistemas CRUD reais e funcionais;

●     Utilizar tratamento de erros e boas práticas de segurança.


Agora, o PHP deixa de ser apenas uma linguagem de exibição e passa a ser a ponte completa entre o usuário e o armazenamento real de informações.


🚀 Próxima etapa – Trabalhando com Arquitetura MVC e Organização Profissional do Código PHP

Na próxima etapa, você aprenderá a construir aplicações PHP de forma estruturada e escalável, separando lógica, apresentação e dados — exatamente como fazem os desenvolvedores profissionais.



Este conteúdo faz parte do Academy Code Christ. 

Um projeto criado para ajudar jovens e iniciantes a aprender programação do zero, de forma simples e gratuita.

Nossa missão é compartilhar conhecimento e incentivar mais pessoas a descobrir que também podem aprender tecnologia, criar projetos e desenvolver novas habilidades.
Todo o conteúdo é disponibilizado gratuitamente, de forma clara, prática e 
sem enrolação. 

Você pode apoiar o projeto se quiser 
com um café. 



Post a Comment

Postagem Anterior Próxima Postagem