0Pricing
PHP Academy · Aula

Instruções preparadas e vinculação

Use prepare, bindParam e execute para evitar injeção de SQL.

Instruções preparadas e vinculação é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

Por que usar instruções preparadas?

As instruções preparadas separam a estrutura SQL dos dados. A entrada do usuário é sempre tratada como um valor — nunca como código SQL — tornando a injeção de SQL impossível.

prepare() + execute()

Fluxo básico: prepare com marcadores de posição e depois execute com valores.

<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST["email"]]);
$user = $stmt->fetch();

Marcadores nomeados

Use marcadores nomeados (:name) para obter clareza, especialmente quando o mesmo valor aparece várias vezes.

<?php
$stmt = $pdo->prepare(
    "INSERT INTO users (name, email) VALUES (:name, :email)"
);
$stmt->execute([':name' => "Alice", ':email' => "alice@example.com"]);

bindParam vs bindValue

bindParam associa uma variável por referência — o valor é lido no momento da execução. bindValue associa um valor imediatamente.

<?php
$name = "Bob";
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->bindParam(":name", $name);
$name = "Carol";
$stmt->execute(); // inserts "Carol"

Exemplo de bindValue

Use bindValue quando quiser fixar o valor no momento da associação.

<?php
$stmt = $pdo->prepare("SELECT * FROM products WHERE price < :max");
$stmt->bindValue(":max", 50.00, PDO::PARAM_INT);
$stmt->execute();

Constantes de tipo

O terceiro parâmetro, opcional, especifica o tipo de dado: PDO::PARAM_INT, PDO::PARAM_STR, PDO::PARAM_BOOL, PDO::PARAM_NULL.

Executando instruções novamente

Uma instrução preparada pode ser executada várias vezes — a consulta é compilada uma única vez no servidor.

<?php
$stmt = $pdo->prepare("INSERT INTO logs (msg) VALUES (:msg)");
foreach ($messages as $msg) {
    $stmt->execute([':msg' => $msg]);
}

rowCount()

Depois de INSERT, UPDATE ou DELETE, rowCount() retorna quantas linhas foram afetadas.

<?php
$stmt = $pdo->prepare("DELETE FROM users WHERE active = 0");
$stmt->execute();
echo $stmt->rowCount()." users deleted";

lastInsertId()

Depois de um INSERT, obtenha a chave primária de incremento automático com $pdo->lastInsertId().

<?php
$stmt = $pdo->prepare("INSERT INTO articles (title) VALUES (:t)");
$stmt->execute([':t' => "My Post"]);
$newId = $pdo->lastInsertId();

Nunca concatene a entrada do usuário

Nunca faça isto: "SELECT * FROM users WHERE name = '".$name."'". Use sempre marcadores de posição — mesmo que tenha "sanitizado" a entrada.

Objeto PDOStatement

prepare() retorna um PDOStatement com: execute(), fetch(), fetchAll(), bindParam(), bindValue(), rowCount().

Resumo

Use sempre instruções preparadas para consultas com dados externos. Prefira marcadores nomeados. Use bindValue para valores imediatos e bindParam para associações em laços.

Verificação rápida

Quando bindParam lê o valor?

Perguntas Frequentes

A aula “Instruções preparadas e vinculação” é grátis?

Sim — o texto completo de “Instruções preparadas e vinculação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Instruções preparadas e vinculação”?

Use prepare, bindParam e execute para evitar injeção de SQL. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Instruções preparadas e vinculação”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conexão com MySQL usando PDO
  2. Instruções preparadas e vinculação
  3. Obtenção de resultados com PDO
  4. Transações com PDO
← Voltar para PHP Academy