Introducción a PHP y MySQL
PHP y MySQL son dos de las tecnologías más populares para el desarrollo web. Aprende a conectarlos, crear tablas e insertar y leer datos.
PHP y MySQL son dos de las tecnologías más populares para el desarrollo web y están diseñadas para trabajar juntas. PHP se ejecuta en el servidor y genera el HTML que ven tus visitantes; MySQL almacena los datos que esas páginas necesitan: usuarios, publicaciones, pedidos, comentarios. Casi todos los sitios dinámicos que usas (un blog, un foro, una tienda en línea) están construidos con esta combinación o una muy similar.
Esta página explica qué hace cada tecnología, las dos formas en que PHP se comunica con MySQL y un flujo de trabajo completo y ejecutable: conectar, crear una tabla, insertar datos y leerlos. Al final sabrás qué herramientas usar y a dónde ir para cada operación.
¿Qué es PHP?
PHP significa PHP: Hypertext Preprocessor y es un lenguaje de scripting del lado del servidor. "Del lado del servidor" significa que el código se ejecuta en el servidor web antes de que se envíe nada al navegador — el visitante nunca ve el PHP, solo el HTML que produce. Como PHP puede leer entradas del usuario, comunicarse con una base de datos y construir una página diferente en cada solicitud, se usa en sitios de comercio electrónico, foros, blogs y cualquier aplicación que cambia según los datos.
¿Qué es MySQL?
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS). "Relacional" significa que los datos viven en tablas compuestas de filas y columnas — una tabla users, una tabla products — y las tablas pueden referenciarse entre sí. PHP envía comandos a MySQL usando SQL (Structured Query Language), el lenguaje estándar para pedirle a una base de datos que almacene o devuelva datos. MySQL mantiene los datos seguros en disco entre solicitudes, por lo que la información introducida hoy seguirá ahí la semana que viene.
¿Por qué usar PHP y MySQL juntos?
- Gratuitos y de código abierto. Ambos son gratuitos para usar y distribuir, por lo que puedes construir y alojar una aplicación completa sin coste de licencia.
- Escalables. La misma pila funciona para un blog personal o un sitio de alto tráfico — añades recursos a medida que crecen los datos y el tráfico.
- Fáciles de aprender y bien documentados. PHP tiene una curva de aprendizaje suave, MySQL está en todas partes y la enorme comunidad significa que la mayoría de los problemas que encuentres ya están resueltos en línea.
- Ampliamente soportados. Casi todo proveedor de alojamiento web ofrece PHP y MySQL de serie, y grandes empresas confían en esta combinación en producción.
Dos formas de conectar: MySQLi vs. PDO
PHP incluye dos extensiones de base de datos modernas. Debes elegir una y mantenerla para un proyecto:
| MySQLi | PDO | |
|---|---|---|
| Compatible con | Solo MySQL | Más de 12 bases de datos (MySQL, PostgreSQL, SQLite…) |
| Estilos de API | Procedimental y orientado a objetos | Solo orientado a objetos |
| Sentencias preparadas | Sí | Sí |
| Mejor cuando | Estás seguro de que solo usarás MySQL | Puede que cambies de base de datos más adelante |
Evita las antiguas funciones
mysql_*que puedes encontrar en tutoriales viejos. Fueron eliminadas en PHP 7 y son inseguras. Usa MySQLi o PDO.
Ambas extensiones admiten sentencias preparadas, que es la característica de seguridad más importante aquí: evitan los ataques de inyección SQL. Consulta MySQL Prepared Statements para la explicación completa.
Conectar a una base de datos MySQL
Una conexión necesita cuatro cosas: el host, un nombre de usuario, una contraseña y el nombre de la base de datos. El ejemplo a continuación usa el estilo procedimental de MySQLi y comprueba si hay errores antes de continuar.
<?php
$host = 'localhost';
$user = 'username';
$password = 'password';
$dbname = 'database_name';
// Create connection
$conn = mysqli_connect($host, $user, $password, $dbname);
// Always check the connection before doing anything else
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>Para el estilo orientado a objetos de MySQLi, un ejemplo completo de PDO y la resolución de problemas de conexión, consulta Connecting PHP to MySQL y PHP MySQLi.
El flujo de trabajo típico
Una vez conectado, casi todo lo que haces con una base de datos es una de cuatro operaciones, a menudo llamadas CRUD — Create, Read, Update, Delete (Crear, Leer, Actualizar, Eliminar). Cada una se corresponde con una sentencia SQL y tiene su propio capítulo:
- Crear una tabla para definir dónde viven los datos — consulta Create a MySQL Table.
- Insertar filas de datos — consulta Insert Data into MySQL.
- Leer (seleccionar) datos de vuelta — consulta Select Data from MySQL.
- Actualizar filas existentes — consulta Update Data in MySQL.
- Eliminar filas que ya no necesitas — consulta Delete Data in MySQL.
Normalmente acotarás los resultados con una cláusula WHERE y los ordenarás con ORDER BY.
Un ejemplo mini completo
Este script se conecta, crea una tabla users si no existe, inserta una fila y luego lee todo de vuelta. Usa una sentencia preparada para la inserción, de modo que los valores proporcionados por el usuario no puedan romper la consulta.
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// 1. Create a table
mysqli_query($conn, "
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
)
");
// 2. Insert a row safely with a prepared statement
$stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = "Ada Lovelace";
$email = "[email protected]";
mysqli_stmt_execute($stmt);
// 3. Read the data back
$result = mysqli_query($conn, "SELECT id, name, email FROM users");
while ($row = mysqli_fetch_assoc($result)) {
echo $row['id'] . ": " . $row['name'] . " (" . $row['email'] . ")\n";
}
mysqli_close($conn);
?>El argumento "ss" le indica a MySQL que ambos valores vinculados son strings. Como los valores se vinculan por separado del texto SQL, un atacante no puede inyectar SQL malicioso a través del campo name o email.
Errores comunes
- Olvidar comprobar la conexión. Si las credenciales o el host son incorrectos, cada llamada posterior falla silenciosamente. Siempre usa
die()o gestiona el error justo después de conectar. - Construir consultas con concatenación de strings. Poner la entrada del usuario directamente en una cadena SQL invita a la inyección SQL. Usa sentencias preparadas en su lugar.
- Dejar los errores de base de datos visibles para los usuarios. En producción, registra los errores en lugar de imprimir
mysqli_connect_error()en la página — puede filtrar detalles del servidor.
Conclusión
PHP y MySQL te permiten construir sitios web dinámicos y orientados a datos con herramientas gratuitas y bien soportadas. Conéctate con MySQLi o PDO, usa siempre sentencias preparadas para la entrada del usuario y recuerda que casi toda tarea de base de datos es solo una de las cuatro operaciones CRUD. Desde aquí, sigue los enlaces del flujo de trabajo anteriores para aprender cada operación en profundidad.