Welington Pereira
Desenvolvedor Full Stack & Consultor
Especialista em linguagens de programação e banco de dados. Compartilhando dicas de programação práticas, tutoriais e soluções para o dia a dia do desenvolvedor.
Desenvolvedor Full Stack & Consultor
Especialista em linguagens de programação e banco de dados. Compartilhando dicas de programação práticas, tutoriais e soluções para o dia a dia do desenvolvedor.
Para fazer operações de banco de dados em PHP de forma segura e evitar injeções de SQL, você deve usar declarações preparadas (prepared statements) fornecidas pela extensão PDO (PHP Data Objects) ou MySQLi. Ambas as extensões fornecem uma maneira segura de lidar com consultas SQL, evitando a injeção de SQL ao separar a lógica da consulta dos dados de entrada.
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'usuario', 'senha');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Erro: ' . $e->getMessage();
}
?>
<?php
$stmt = $pdo->prepare("INSERT INTO tabela (coluna1, coluna2) VALUES (:valor1, :valor2)");
$stmt->execute(['valor1' => $valor1, 'valor2' => $valor2]);
?>
<?php
$stmt = $pdo->prepare("SELECT * FROM tabela WHERE coluna = :valor");
$stmt->execute(['valor' => $valor]);
$resultado = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<?php
$stmt = $pdo->prepare("UPDATE tabela SET coluna1 = :valor1 WHERE coluna2 = :valor2");
$stmt->execute(['valor1' => $novo_valor1, 'valor2' => $valor2]);
?>
<?php
$stmt = $pdo->prepare("DELETE FROM tabela WHERE coluna = :valor");
$stmt->execute(['valor' => $valor]);
?>
<?php
$mysqli = new mysqli("localhost", "usuario", "senha", "nome_do_banco");
if ($mysqli->connect_error) {
die("Conexão falhou: " . $mysqli->connect_error);
}
?>
<?php
$stmt = $mysqli->prepare("INSERT INTO tabela (coluna1, coluna2) VALUES (?, ?)");
$stmt->bind_param("ss", $valor1, $valor2);
$stmt->execute();
$stmt->close();
?>
<?php
$stmt = $mysqli->prepare("SELECT * FROM tabela WHERE coluna = ?");
$stmt->bind_param("s", $valor);
$stmt->execute();
$resultado = $stmt->get_result();
$dados = $resultado->fetch_all(MYSQLI_ASSOC);
$stmt->close();
?>
<?php
$stmt = $mysqli->prepare("UPDATE tabela SET coluna1 = ? WHERE coluna2 = ?");
$stmt->bind_param("ss", $novo_valor1, $valor2);
$stmt->execute();
$stmt->close();
?>
<?php
$stmt = $mysqli->prepare("DELETE FROM tabela WHERE coluna = ?");
$stmt->bind_param("s", $valor);
$stmt->execute();
$stmt->close();
?>
Segurança: Separar os dados da lógica da consulta impede a injeção de SQL, uma das vulnerabilidades mais comuns e perigosas.
Reutilização: Declarações preparadas podem ser reutilizadas com diferentes conjuntos de dados, aumentando a eficiência.
Leitura: Torna o código mais legível e mantém a estrutura SQL clara.
Nenhum comentário:
Postar um comentário