Bases de datos con PHP y MySQL
3.3 Introducción a las bases de datos en PHP
Enunciado general:
En este tema haremos un repaso de los conceptos clave sobre las bases de datos, especialmente enfocados en cómo interactuar con ellas desde PHP. Aunque ya se han cubierto los conceptos básicos de bases de datos en módulos anteriores, vamos a repasar lo que necesitas saber para trabajar con bases de datos en PHP, cómo instalar y configurar el entorno adecuado, y cómo conectar tu aplicación PHP a una base de datos MySQL (relacional) y NoSQL (como MongoDB). También realizaremos algunas pruebas de conexión para asegurarnos de que el entorno está listo.
Objetivo del tema:
- Repasar los conceptos de bases de datos que ya deberían ser familiares para los estudiantes, especialmente el modelo relacional y NoSQL.
- Preparar el entorno de desarrollo en PHP para trabajar con bases de datos, asegurándonos de que se tiene todo lo necesario instalado.
- Realizar pruebas de conexión a bases de datos tanto en MySQL como en MongoDB para verificar que el entorno está correctamente configurado.
Conceptos clave que cubriremos:
-
Modelo relacional y NoSQL:
- Bases de datos relacionales (RDBMS): En estas bases de datos, los datos se organizan en tablas con filas y columnas. Se utilizan claves primarias y foráneas para establecer relaciones entre las tablas. Ejemplo: MySQL, PostgreSQL.
- Bases de datos NoSQL: Son bases de datos no basadas en tablas. Pueden almacenar datos en forma de documentos (por ejemplo, MongoDB) o en formato clave-valor, columnares, etc. Son más flexibles en cuanto a la estructura de los datos y se utilizan en aplicaciones que requieren alta escalabilidad o manejo de grandes volúmenes de datos no estructurados.
-
Instalación necesaria para trabajar con bases de datos en PHP:
- MySQL: Se debe tener instalado MySQL o MariaDB en el servidor.
- MongoDB: Necesitaremos instalar MongoDB si vamos a trabajar con bases de datos NoSQL.
- PHP y extensiones: Asegúrate de tener PHP instalado con las extensiones necesarias para trabajar con MySQLi (para conexiones MySQL) y MongoDB.
- Para MySQL:
mysqlioPDO_MySQL. - Para MongoDB:
mongoomongodb(extensiones).
- Para MySQL:
-
Acceso a bases de datos en PHP:
- Conexión a MySQL utilizando MySQLi y PDO.
- Conexión a MongoDB utilizando la extensión de MongoDB para PHP.
Prueba de conexión a bases de datos
1. Conexión a MySQL usando MySQLi
-
Requisitos: Tener instalado MySQL o MariaDB en el servidor. Asegúrate de tener un servidor en marcha.
-
Código de prueba con MySQLi:
Conexión a MySQL usando MySQLi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<?php // Parámetros de conexión $host = "localhost"; $usuario = "root"; // Cambia esto si usas otro usuario $contrasena = ""; // Cambia esto si usas otra contraseña $base_de_datos = "test"; // Asegúrate de tener esta base de datos creada // Crear conexión $conexion = new mysqli($host, $usuario, $contrasena, $base_de_datos); // Comprobar la conexión if ($conexion->connect_error) { die("Conexión fallida: " . $conexion->connect_error); } else { echo "Conexión exitosa a la base de datos MySQL!"; } // Cerrar conexión $conexion->close(); ?> -
Explicación del código:
- Usamos MySQLi para conectar con una base de datos MySQL.
new mysqli($host, $usuario, $contrasena, $base_de_datos)crea la conexión.- Si la conexión falla, mostramos el error utilizando
connect_error. - Si la conexión es exitosa, mostramos un mensaje de éxito.
2. Conexión a MySQL usando PDO
-
Código de prueba con PDO:
Conexión a MySQL usando PDO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<?php // Parámetros de conexión $host = "localhost"; $usuario = "root"; // Cambia esto si usas otro usuario $contrasena = ""; // Cambia esto si usas otra contraseña $base_de_datos = "test"; // Asegúrate de tener esta base de datos creada try { // Crear conexión $conexion = new PDO("mysql:host=$host;dbname=$base_de_datos", $usuario, $contrasena); // Establecer el modo de error de PDO $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Conexión exitosa a la base de datos MySQL usando PDO!"; } catch (PDOException $e) { echo "Conexión fallida: " . $e->getMessage(); } ?> -
Explicación del código:
- Usamos PDO para conectar con MySQL.
- Se establece el modo de error a
PDO::ERRMODE_EXCEPTIONpara que se lance una excepción en caso de error. - Si la conexión es exitosa, mostramos un mensaje de éxito.
3. Conexión a MongoDB (NoSQL)
-
Requisitos: Asegúrate de tener MongoDB instalado en el servidor y la extensión de PHP para MongoDB configurada.
-
Código de prueba con MongoDB:
| Conexión a MongoDB | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
-
Explicación del código:
-
Usamos la extensión
MongoDB\Driver\Managerpara conectar con MongoDB. - En este caso,
localhosty27017son los valores predeterminados para MongoDB. Si tienes configuraciones diferentes, cámbialas en los parámetros.
Conclusión
Este tema proporciona un repaso de los conceptos clave relacionados con las bases de datos y prepara el entorno de desarrollo en PHP para trabajar con bases de datos tanto relacionales (como MySQL) como NoSQL (como MongoDB). Hemos visto cómo conectar a estas bases de datos usando MySQLi, PDO, y MongoDB. En el siguiente punto, profundizaremos más en las operaciones básicas de bases de datos y cómo trabajar con ellas en PHP.
Anexo I: Preparación del entorno para MongoDB
Este anexo te guiará paso a paso para configurar MongoDB en un contenedor Docker y asegurarte de que tu contenedor PHP pueda conectarse a él correctamente utilizando Nginx como servidor web.
1. Crear el contenedor para MongoDB
Paso 1: Descargar la imagen de MongoDB
Ejecuta el siguiente comando para descargar la imagen oficial de MongoDB desde Docker Hub:
docker pull mongo
Paso 2: Crear y ejecutar el contenedor de MongoDB
Una vez descargada la imagen, crea y ejecuta el contenedor de MongoDB con el siguiente comando:
docker run -d --name mongo_container -p 27017:27017 mongo
Este comando:
- Crea un contenedor en segundo plano (
-d) con el nombremongo_container. - Expone el puerto
27017del contenedor al puerto27017de tu máquina local, lo que permite la comunicación entre tu contenedor PHP y MongoDB.
Paso 3: Verificar la conexión a MongoDB
Para verificar que MongoDB está funcionando correctamente, ejecuta:
docker exec -it mongo_container bash
Esto te llevará a la consola interactiva de MongoDB dentro del contenedor. Si ves un prompt similar a:
>
Significa que MongoDB está funcionando correctamente. Para salir de la consola de MongoDB, escribe exit.
2. Configurar el contenedor PHP para conectar con MongoDB
Nota
Si has seguido los pasos de este curso para crear los contenedores de PHP y Nginx, recuerda que en el contenedor de PHP ya debes tener instalados los controladores para MySQL y MongoDB. Puedes verificarlo ejecutando el siguiente comando:
docker exec -it nombre_del_contenedor_php php -m
mongodb en la lista de módulos instalados. Si no está, sigue los pasos a continuación para instalarlo. Si está puedes omitir este anexo e ir directamento al punto 4.
Paso 1: Acceder al contenedor PHP
Si tu contenedor PHP está corriendo, puedes acceder a él usando el siguiente comando:
docker exec -it nombre_del_contenedor_php bash
Esto te llevará al entorno de terminal de tu contenedor PHP.
Paso 2: Instalar la extensión MongoDB para PHP
Si la extensión MongoDB para PHP no está instalada en tu contenedor PHP, sigue estos pasos para instalarla:
- Actualizar los paquetes de la imagen:
Ejecuta el siguiente comando para actualizar los paquetes:
apt-get update
- Instalar las dependencias necesarias:
MongoDB requiere algunas bibliotecas que deben instalarse antes de instalar la extensión para PHP:
apt-get install -y libmongoc-1.0-0 libjemalloc2
- Instalar la extensión de MongoDB para PHP:
Ahora, instala la extensión de MongoDB para PHP usando PECL: !!! note "instalación" aparecerán mensajes que nos preguntarán si queremos instalar algunas dependencias. Acepta todas las opciones predeterminadas. O Acepta sus valores por defecto.
pecl install mongodb
- Habilitar la extensión en PHP:
Después de instalar la extensión, debemos habilitarla editando los archivos php.ini. En Nginx, los archivos php.ini suelen estar ubicados en /etc/php/{versión}/fpm/php.ini para PHP-FPM (que es el que utiliza Nginx).
Para habilitar la extensión, abre el archivo php.ini en el editor de texto:
- Localizar el archivo
php.ini. Debe estar ubicado en una ruta similar a:
bash
/usr/local/etc/php/php.ini
Utiliza `nano` para editar el archivo, si no está instalado, puedes usar `vi` o cualquier otro editor de texto que prefieras, o instalalo con el siguiente comando:
bash
apt-get install nano
bash
nano /usr/local/etc/php/php.ini
Agrega la siguiente línea en el apartado de extensiones:
bash
extension=mongodb.so
- Reiniciar PHP-FPM:
Reiniciar el contenedor PHP para aplicar los cambios:
service php-fpm restart
O si estás usando Docker, puedes reiniciar el contenedor PHP:
docker restart nombre_del_contenedor_php
3. Verificar la instalación de la extensión MongoDB
Para asegurarte de que la extensión de MongoDB se haya instalado correctamente, ejecuta el siguiente comando:
php -m | grep mongodb
Si ves mongodb en la salida, significa que la extensión está correctamente instalada.
4. Probar la conexión a MongoDB desde PHP
Ahora que tienes MongoDB en un contenedor y PHP configurado para conectarse a él, realizaremos una prueba de conexión.
Paso 1: Crear el archivo PHP para probar la conexión
Crea un archivo PHP llamado test_mongo_connection.php con el siguiente contenido:
| Prueba de conexión a MongoDB | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Paso 2: Colocar el archivo PHP en el contenedor
Asegúrate de colocar el archivo test_mongo_connection.php en el directorio correcto dentro del contenedor PHP, por ejemplo en /var/www/html.
Paso 3: Ejecutar la prueba de conexión
Accede al contenedor PHP con el siguiente comando:
docker exec -it nombre_del_contenedor_php bash
Dirígete al directorio donde colocaste el archivo test_mongo_connection.php y ejecútalo con el siguiente comando:
php test_mongo_connection.php
Si la conexión es exitosa, deberías ver el siguiente mensaje:
Conexión exitosa a MongoDB!
Si hay un problema con la conexión, se mostrará un mensaje de error que podrás utilizar para diagnosticar el problema.
5. Resumen
En este anexo, hemos cubierto los pasos necesarios para: 1. Configurar y ejecutar MongoDB en un contenedor Docker. 2. Instalar la extensión MongoDB para PHP en un contenedor PHP que usa Nginx. 3. Verificar la instalación de MongoDB y realizar una prueba de conexión desde PHP.
Ahora deberías tener tu entorno completamente preparado para trabajar con MongoDB en PHP, y podrás empezar a realizar consultas y operaciones en bases de datos NoSQL utilizando este entorno.