Introducción: por qué PHP y las bases de datos son una potencia
\n\nCualquier sitio web o aplicación moderna no es solo un conjunto de páginas, sino un sistema dinámico que almacena y procesa datos. PHP, como uno de los lenguajes más populares para el desarrollo web, proporciona potentes herramientas para trabajar con bases de datos. En este artículo, analizaremos dos sistemas clave de gestión de bases de datos (SGBD): el relacional PostgreSQL y el orientado a documentos MongoDB.
\n\nPara un principiante, la elección entre ellos puede parecer complicada, pero en realidad cada uno resuelve sus propias tareas. PostgreSQL es un estándar SQL confiable para datos estructurados, mientras que MongoDB es un sistema NoSQL flexible para prototipado rápido y trabajo con documentos similares a JSON. Mostraremos cómo conectarse a ambos desde PHP, realizar operaciones básicas (CRUD) y brindaremos consejos prácticos.
\n\n1. Preparación del entorno: qué instalar
\n\nAntes de escribir código, asegúrese de tener instaladas las extensiones PHP necesarias. Para trabajar con PostgreSQL se requiere la extensión pdo_pgsql, para MongoDB — mongodb (a través de PECL o composer).
Instalación de extensiones
\n- \n
- PostgreSQL: descomente la línea
extension=pdo_pgsqlen php.ini o instálela mediante el gestor de paquetes (por ejemplo,sudo apt install php-pgsql). \n - MongoDB: use Composer:
composer require mongodb/mongodb— esto instalará la biblioteca oficial. \n
Después de la instalación, verifique que las extensiones estén activas ejecutando php -m | grep -i pgsql y php -m | grep -i mongodb.
2. PostgreSQL y PHP: confiabilidad y SQL
\n\nPostgreSQL es un potente SGBD relacional con soporte para transacciones ACID, consultas complejas y campos JSON. Para trabajar con él en PHP, lo más conveniente es usar PDO (PHP Data Objects) — una interfaz universal.
\n\nConexión a PostgreSQL
\nCree un archivo 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 "¡Conexión a PostgreSQL exitosa!";\n} catch (PDOException $e) {\n die("Error de conexión: " . $e->getMessage());\n}\n?>\n\nOperaciones CRUD con el ejemplo de la tabla users
\nCrearemos la tabla y realizaremos consultas básicas.
\n\nCreación de la tabla
\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 "Tabla creada.";\n?>\n\nInserción de datos (CREATE)
\n<?php\n$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");\n$stmt->execute(['name' => 'Iván Petrov', 'email' => 'ivan@example.com']);\necho "Usuario agregado.";\n?>\n\nLectura de datos (READ)
\n<?php\n$stmt = $pdo->query("SELECT * FROM users");\nwhile ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {\n echo "ID: {$row['id']}, Nombre: {$row['name']}, Email: {$row['email']}<br>";\n}\n?>\n\nActualización (UPDATE) y eliminación (DELETE)
\n<?php\n// Actualización\n$stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id");\n$stmt->execute(['name' => 'Pedro Sidorov', 'id' => 1]);\n\n// Eliminación\n$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");\n$stmt->execute(['id' => 2]);\n?>\n\nConsejo: Use siempre consultas preparadas (prepare) para protegerse contra inyecciones SQL.
\n\n3. MongoDB y PHP: flexibilidad sin esquema
\n\nMongoDB almacena datos en forma de documentos BSON (JSON binario).