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_pgsqlExemplo 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/mongodbConexã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']);