Introdução: por que PHP e bancos de dados são uma força
\n\nQualquer site ou aplicativo moderno não é apenas um conjunto de páginas, mas um sistema dinâmico que armazena e processa dados. PHP, como uma das linguagens mais populares para desenvolvimento web, fornece ferramentas poderosas para trabalhar com bancos de dados. Neste artigo, abordaremos dois sistemas-chave de gerenciamento de bancos de dados (SGBDs): o relacional PostgreSQL e o orientado a documentos MongoDB.
\n\nPara um iniciante, a escolha entre eles pode parecer difícil, mas na verdade cada um resolve seus próprios problemas. PostgreSQL é um padrão SQL confiável para dados estruturados, enquanto MongoDB é um sistema NoSQL flexível para prototipagem rápida e trabalho com documentos semelhantes a JSON. Mostraremos como conectar-se a ambos a partir do PHP, realizar operações básicas (CRUD) e dar dicas práticas.
\n\n1. Preparação do ambiente: o que instalar
\n\nAntes de escrever código, certifique-se de ter as extensões PHP necessárias instaladas. Para trabalhar com PostgreSQL, é necessária a extensão pdo_pgsql; para MongoDB, a extensão mongodb (via PECL ou composer).
Instalação das extensões
\n- \n
- PostgreSQL: descomente a linha
extension=pdo_pgsqlno php.ini ou instale via gerenciador de pacotes (por exemplo,sudo apt install php-pgsql). \n - MongoDB: use o Composer:
composer require mongodb/mongodb— isso instalará a biblioteca oficial. \n
Após a instalação, verifique se as extensões estão ativas executando php -m | grep -i pgsql e php -m | grep -i mongodb.
2. PostgreSQL e PHP: confiabilidade e SQL
\n\nPostgreSQL é um SGBD relacional poderoso com suporte a transações ACID, consultas complexas e campos JSON. Para trabalhar com ele em PHP, o mais conveniente é usar PDO (PHP Data Objects) — uma interface universal.
\n\nConexão ao PostgreSQL
\nCrie um arquivo connect_pgsql.php:
<?php\n$host = 'localhost';\n$dbname = 'testdb';\n$user = 'postgres';\n$pass = 'password';\n\ntry {\n $pdo = new PDO("pgsql:host=$host;dbname=$dbname", $user, $pass);\n $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n echo "Conexão ao PostgreSQL bem-sucedida!";\n} catch (PDOException $e) {\n die("Erro de conexão: " . $e->getMessage());\n}\n?>\n\nOperações CRUD no exemplo da tabela users
\nVamos criar a tabela e realizar consultas básicas.
\n\nCriação da tabela
\n<?php\n$sql = "CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(150) UNIQUE NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n)";\n$pdo->exec($sql);\necho "Tabela criada.";\n?>\n\nInserção de dados (CREATE)
\n<?php\n$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");\n$stmt->execute(['name' => 'Ivan Petrov', 'email' => 'ivan@example.com']);\necho "Usuário adicionado.";\n?>\n\nLeitura de dados (READ)
\n<?php\n$stmt = $pdo->query("SELECT * FROM users");\nwhile ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {\n echo "ID: {$row['id']}, Nome: {$row['name']}, Email: {$row['email']}<br>";\n}\n?>\n\nAtualização (UPDATE) e exclusão (DELETE)
\n<?php\n// Atualização\n$stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id");\n$stmt->execute(['name' => 'Pyotr Sidorov', 'id' => 1]);\n\n// Exclusão\n$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");\n$stmt->execute(['id' => 2]);\n?>\n\nDica: Sempre use consultas preparadas (prepare) para proteção contra injeção de SQL.
\n\n3. MongoDB e PHP: flexibilidade sem esquema
\n\nMongoDB armazena dados na forma de documentos BSON (JSON binário).