Trabajo con bases de datos en PHP: PostgreSQL y MongoDB en la práctica
El desarrollo web moderno en PHP rara vez prescinde de la interacción con bases de datos. Dos soluciones populares — la relacional PostgreSQL y la orientada a documentos MongoDB — ofrecen a los desarrolladores herramientas flexibles para almacenar y procesar datos. En este artículo analizaremos cómo conectarse a cada uno de estos SGBD, realizar operaciones CRUD básicas y evitar errores típicos. Todos los ejemplos de código están escritos en PHP y listos para usar.
Conexión a PostgreSQL mediante PDO
Para trabajar con PostgreSQL en PHP se recomienda usar la extensión PDO (PHP Data Objects). Proporciona una interfaz unificada para diferentes SGBD y protege contra inyecciones SQL mediante sentencias preparadas.
Instale el controlador pdo_pgsql si aún no está activado. Puede verificarlo mediante phpinfo() o con el comando:
php -m | grep pdo_pgsqlEjemplo de conexión a una base de datos 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 "¡Conexión a PostgreSQL exitosa!";} catch (PDOException $e) { die("Error de conexión: " . $e->getMessage());}Después de la conexión, realizaremos una consulta simple. Crearemos la tabla users e insertaremos algunos registros:
<?php// Creación de la tabla$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)");
// Inserción de datos mediante sentencia preparada$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");$stmt->execute([':name' => 'Iván Petrov', ':email' => 'ivan@example.com']);echo "Usuario agregado, ID: " . $pdo->lastInsertId();
// Consulta de todos los usuarios$users = $pdo->query("SELECT * FROM users")->fetchAll();foreach ($users as $user) { echo "{$user['name']} - {$user['email']}<br>";}Trabajo con MongoDB mediante el controlador oficial
MongoDB es una base de datos NoSQL que almacena datos en formato BSON (JSON binario). Para PHP existe el controlador oficial mongodb, que se instala mediante Composer junto con la librería mongodb/mongodb.
Instalación:
composer require mongodb/mongodbConexión a MongoDB y selección de la base de datos:
<?phprequire 'vendor/autoload.php';
use MongoDB\\Client;
$uri = 'mongodb://localhost:27017';$client = new Client($uri);$collection = $client->my_database->users; // base de datos my_database, colección users
echo "Conexión a MongoDB establecida";Ahora realizaremos operaciones CRUD. En MongoDB, los datos se representan como arreglos asociativos:
<?php// Inserción de un documento$insertResult = $collection->insertOne([ 'name' => 'Ana Smirnova', 'email' => 'anna@example.com', 'age' => 28, 'tags' => ['php', 'mongodb']]);echo "ID del nuevo documento: " . $insertResult->getInsertedId();
// Búsqueda por campo$user = $collection->findOne(['email' => 'anna@example.com']);echo "Nombre: " . $user['name'];
// Actualización: agregamos el campo "status"$collection->updateOne( ['email' => 'anna@example.com'], ['$set' => ['status' => 'active']]);
// Eliminación$collection->deleteOne(['email' => 'anna@example.com']);