Trabalhando com Bancos de Dados em PHP: PostgreSQL e MongoDB
O desenvolvimento web moderno em PHP raramente ocorre sem interagir com bancos de dados. A escolha entre um sistema relacional (PostgreSQL) e um orientado a documentos (MongoDB) depende da estrutura dos dados, requisitos de desempenho e escalabilidade do projeto. Neste artigo, abordaremos como conectar-se a ambos os SGBDs, realizar operações básicas e o que observar ao escolher.
1. Conectando ao PostgreSQL via PDO
PostgreSQL é um SGBD relacional poderoso com suporte a transações ACID, consultas complexas e tipos de dados extensíveis. Em PHP, recomenda-se usar a extensão PDO (PHP Data Objects) para trabalhar com ele, que fornece uma interface unificada para diferentes bancos de dados.
Primeiro, certifique-se de que os drivers pdo_pgsql e pgsql estão instalados em seu sistema. Você pode verificar isso através do phpinfo().
Exemplo de conexão e inserção de dados
<?php$host = 'localhost';$dbname = 'my_database';$user = 'my_user';$password = 'my_password';
try { // Create DSN (Data Source Name) $dsn = "pgsql:host=$host;dbname=$dbname"; // Connect $pdo = new PDO($dsn, $user, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); echo "Connection to PostgreSQL established successfully!<br>"; // Data insertion using prepared statements $sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)"; $stmt = $pdo->prepare($sql); $stmt->execute([ ':name' => 'Ivan Petrov', ':email' => 'ivan@example.com', ':age' => 28 ]); echo "User added. ID: " . $pdo->lastInsertId(); } catch (PDOException $e) { echo "Connection error: " . $e->getMessage(); die();}?>O uso de instruções preparadas protege contra injeção de SQL e melhora o desempenho para consultas repetitivas semelhantes.
Recuperação de dados com filtragem
<?php$minAge = 25;$search = "SELECT id, name, email, age FROM users WHERE age > :minAge ORDER BY age DESC";$stmt = $pdo->prepare($search);$stmt->execute([':minAge' => $minAge]);
$users = $stmt->fetchAll();
foreach ($users as $user) { echo "{$user['name']} ({$user['age']} years old) - {$user['email']}<br>";}?>PostgreSQL suporta JOINs complexos, subconsultas, funções de janela e busca em texto completo — isso o torna uma escolha ideal para projetos com requisitos rigorosos de integridade de dados.
2. Conectando ao MongoDB via driver oficial
MongoDB é um banco de dados NoSQL que armazena dados na forma de documentos (objetos BSON semelhantes a JSON). É adequado para projetos com esquemas flexíveis, prototipagem rápida e escalabilidade horizontal.
Para trabalhar com MongoDB em PHP, usa-se a extensão mongodb e a biblioteca mongodb/mongodb (instalada via Composer).
Instalando o driver
# Via Composer in the project rootcomposer require mongodb/mongodbExemplo de conexão e inserção de documento
<?phprequire_once 'vendor/autoload.php';
use MongoDB\\Client;use MongoDB\\Driver\\Exception\\Exception;
try { // Connect to the local server $client = new Client("mongodb://localhost:27017"); // Select the database and collection $collection = $client->my_database->users; // Insert a single document $insertResult = $collection->insertOne([ 'name' => 'Anna Smirnova', 'email' => 'anna@example.com', 'age' => 32, 'interests' => ['programming', 'reading', 'traveling'],