PHP: Persistencia
Aprende a conectar, consultar y gestionar datos en MySQL utilizando PHP, garantizando la persistencia de la información en tus aplicaciones web. Descubre los métodos más comunes para interactuar con esta base de datos y mantener tu proyecto organizado y s
Aprende PHP GRATIS y certifícateEn el desarrollo de aplicaciones web, la persistencia de datos se refiere a la capacidad de almacenar información de forma permanente. En el caso de PHP, MySQL suele ser la base de datos predilecta, gracias a su eficiencia y su amplia adopción. Conectar PHP a MySQL abre la puerta a la creación de sitios dinámicos, donde los datos se guardan y se recuperan según sea necesario, haciendo que la aplicación sea mucho más versátil.
Métodos de conexión a MySQL
Para aprender PHP en temas de persistencia, es importante conocer los dos enfoques principales para conectar con MySQL:
- MySQLi (MySQL Improved): Extensión específica para MySQL que ofrece una interfaz mejorada respecto a la antigua librería de MySQL.
- PDO (PHP Data Objects): Abstracción que permite conectarse a múltiples bases de datos, incluyendo MySQL, usando una sintaxis unificada.
Conexión con MySQLi
<?php
$servidor = "localhost";
$usuario = "root";
$password = "";
$baseDatos = "mi_base";
// Crear conexión
$conexion = mysqli_connect($servidor, $usuario, $password, $baseDatos);
// Verificar conexión
if (!$conexion) {
die("Error de conexión: " . mysqli_connect_error());
}
echo "Conexión exitosa con MySQLi";
?>
Conexión con PDO
<?php
$dsn = "mysql:host=localhost;dbname=mi_base;charset=utf8";
$usuario = "root";
$password = "";
try {
$conexion = new PDO($dsn, $usuario, $password);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conexión exitosa con PDO";
} catch (PDOException $e) {
echo "Error de conexión: " . $e->getMessage();
}
?>
Ambas opciones son válidas, aunque PDO destaca por ser más flexible para proyectos que requieran compatibilidad con otras bases de datos.
Consultas básicas
Una vez establecida la persistencia con la base de datos, se utilizan sentencias SQL para insertar, actualizar, eliminar y consultar datos.
INSERT
<?php
$nombre = "Ana";
$edad = 28;
$sql = "INSERT INTO usuarios (nombre, edad) VALUES ('$nombre', $edad)";
if (mysqli_query($conexion, $sql)) {
echo "Registro insertado correctamente.";
} else {
echo "Error al insertar: " . mysqli_error($conexion);
}
?>
O, en PDO, usando consultas preparadas para mayor seguridad:
<?php
$stmt = $conexion->prepare("INSERT INTO usuarios (nombre, edad) VALUES (:nombre, :edad)");
$stmt->bindParam(':nombre', $nombre);
$stmt->bindParam(':edad', $edad);
$stmt->execute();
echo "Registro insertado correctamente.";
?>
SELECT
<?php
$sql = "SELECT * FROM usuarios";
$resultado = mysqli_query($conexion, $sql);
while ($fila = mysqli_fetch_assoc($resultado)) {
echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . "<br>";
}
?>
En PDO, se haría con:
<?php
$sql = "SELECT * FROM usuarios";
$stmt = $conexion->query($sql);
while ($fila = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . "<br>";
}
?>
Buenas prácticas de persistencia
- Sanitizar datos: Utiliza sentencias preparadas para prevenir inyecciones SQL y otros ataques.
- Control de errores: Asegúrate de capturar y registrar los errores de la base de datos para facilitar el mantenimiento.
- Transacciones: Al realizar varias operaciones que deben completarse todas o ninguna, emplea transacciones para asegurar la consistencia de los datos.
- Manejo de conexiones: Libera los recursos al terminar tus consultas o cuando la conexión deje de ser necesaria.
Creación y uso de tablas
Para mantener la persistencia de la información, primero se definen las tablas donde se almacenarán los datos. Una sentencia sencilla de creación de tabla en MySQL sería:
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
edad INT NOT NULL
);
Tras ejecutar esto, la tabla quedará lista para que PHP pueda gestionar el ciclo de vida de los registros a través de sentencias SQL.
Seguridad y autenticación
En aplicaciones web, a menudo se requiere que los usuarios se autentiquen. Para ello:
- Emplea hashes seguros de contraseñas con funciones como
password_hash()
ypassword_verify()
. - Implementa sesiones en PHP para mantener la información de inicio de sesión de forma temporal.
- Habilita SSL en tu servidor para encriptar el tráfico entre el cliente y el servidor, protegiendo las credenciales.
Recomendaciones finales
- Organiza tus consultas y lógica de acceso a datos en archivos o clases específicas, siguiendo el principio de responsabilidad única.
- Mantén tu base de datos optimizada con índices en columnas que se consulten con frecuencia.
- Documenta los pasos necesarios para recrear la estructura de tablas y la conexión, facilitando futuras actualizaciones del proyecto.
- Utiliza herramientas de depuración como la extensión de PHP en Visual Studio Code para detectar errores y mejorar el rendimiento de tus consultas.
Lecciones de este módulo de PHP
Lecciones de programación del módulo Persistencia del curso de PHP.