Trabalho com bancos de dados em PHP: PostgreSQL e MongoDB na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com bancos de dados em PHP: PostgreSQL e MongoDB na prática



O desenvolvimento web moderno em PHP raramente acontece sem interação com bancos de dados. Duas soluções populares — o relacional PostgreSQL e o orientado a documentos MongoDB — oferecem aos desenvolvedores ferramentas flexíveis para armazenar e processar dados. Neste artigo, veremos como conectar-se a cada um desses SGBDs, realizar operações CRUD básicas e evitar erros comuns. Todos os exemplos de código são escritos em PHP e estão prontos para uso.



Conexão ao PostgreSQL via PDO



Para trabalhar com PostgreSQL em PHP, recomenda-se usar a extensão PDO (PHP Data Objects). Ela fornece uma interface unificada para diferentes SGBDs e protege contra injeção de SQL por meio de prepared statements.



Instale o driver pdo_pgsql, se ainda não estiver ativado. Você pode verificar isso através de phpinfo() ou com o comando:



php -m | grep pdo_pgsql


Exemplo de conexão a um banco de dados local:



<?php$host = 'localhost';$dbname = 'my_database';$user = 'postgres';$pass = 'secret';

try { $dsn = "pgsql:host=$host;dbname=$dbname"; $pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); echo "Conexão ao PostgreSQL bem-sucedida!";} catch (PDOException $e) { die("Erro de conexão: " . $e->getMessage());}


Após a conexão, vamos realizar uma consulta simples. Criaremos a tabela users e inseriremos alguns registros:



<?php// Criação da tabela$pdo->exec("CREATE TABLE IF NOT EXISTS users (    id SERIAL PRIMARY KEY,    name VARCHAR(100) NOT NULL,    email VARCHAR(255) UNIQUE NOT NULL,    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");

// Inserção de dados via prepared statement$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");$stmt->execute([':name' => 'Иван Петров', ':email' => 'ivan@example.com']);echo "Usuário adicionado, ID: " . $pdo->lastInsertId();

// Consulta de todos os usuários$users = $pdo->query("SELECT * FROM users")->fetchAll();foreach ($users as $user) { echo "{$user['name']} - {$user['email']}<br>";}


Trabalho com MongoDB através do driver oficial



MongoDB é um banco de dados NoSQL que armazena dados no formato BSON (JSON binário). Para PHP, existe o driver oficial mongodb, que é instalado via Composer juntamente com a biblioteca mongodb/mongodb.



Instalação:



composer require mongodb/mongodb


Conexão ao MongoDB e seleção do banco de dados:



<?phprequire 'vendor/autoload.php';

use MongoDB\\Client;

$uri = 'mongodb://localhost:27017';$client = new Client($uri);$collection = $client->my_database->users; // banco my_database, coleção users

echo "Conexão ao MongoDB estabelecida";


Agora vamos realizar operações CRUD. No MongoDB, os dados são representados como arrays associativos:



<?php// Inserção de documento$insertResult = $collection->insertOne([    'name' => 'Анна Смирнова',    'email' => 'anna@example.com',    'age' => 28,    'tags' => ['php', 'mongodb']]);echo "ID do novo documento: " . $insertResult->getInsertedId();

// Busca por campo$user = $collection->findOne(['email' => 'anna@example.com']);echo "Nome: " . $user['name'];

// Atualização: adicionando o campo "status"$collection->updateOne( ['email' => 'anna@example.com'], ['$set' => ['status' => 'active']]);

// Exclusão$collection->deleteOne(['email' => 'anna@example.com']);


Comparação de abordagens: quando escolher PostgreSQL e quando escolher MongoDB

Blogs

Book Recommendations