Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

PHP y base de datos

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

45 minutos

La clasificación del torneo

Tu instituto organiza un torneo de fútbol. Cada partido cambia los goles de cada jugador.

Si escribes la clasificación a mano en HTML, tienes que cambiar la página cada vez.

Mejor: los goles viven en una base de datos y la página los lee cada vez que alguien la abre.

Palabras clave

PalabraQué significaEjemplo
Base de datosUn programa que guarda tablas y contesta consultas.league
PDOLa herramienta de PHP para hablar con una base de datos. Son las siglas de PHP Data Objects.new PDO($dsn, $user, $pass)
ConexiónEl canal abierto entre tu script y la base de datos.$pdo
DSNEl texto que dice dónde está la base de datos y cómo se llama.mysql:host=localhost;dbname=league
FilaUn registro de la tabla. En PHP llega como un array con nombre.["name" => "Carmen", "goals" => 9]
ExcepciónUn aviso de error que puedes atrapar con try y catch.catch (PDOException $e)

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Quién habla con quién

La base de datos es otro programa, que normalmente corre en el servidor.

Tu script PHP no abre las tablas. Le pide datos con una consulta de SQL y recibe filas.

Ya sabes SQL, y aquí es igual. Prueba esta consulta.

Pruébalo: los goleadores

Código: sql
-- Los jugadores con 5 goles o más, del que más marcó al que menos.
SELECT name, goals FROM player WHERE goals >= 5 ORDER BY goals DESC;

-- Cambia el 5 por un 8 y ejecuta otra vez.

Conectar con PDO

Para conectar creas un objeto PDO. Le das el DSN, el usuario y la clave.

Con ERRMODE_EXCEPTION PHP avisa de cualquier fallo. Con FETCH_ASSOC cada fila llega como un array con nombre.

Si no puede conectar, atrapas el error. Al visitante le das una frase amable.

Conectar con la base de datos

Código: php
<?php
$dsn = "mysql:host=localhost;dbname=league;charset=utf8mb4";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];

try {
    $pdo = new PDO($dsn, "league_user", "una-clave-larga", $options);
} catch (PDOException $e) {
    // Al visitante, una frase amable. Los detalles, solo al registro.
    error_log($e->getMessage());
    exit("No podemos conectar ahora. Inténtalo más tarde.");
}

Repaso rápido: conectar

Inténtalo

Repaso rápido: conectar

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

Leer filas

Con la conexión abierta, query envía la consulta. Después fetchAll trae todas las filas.

Obtienes un array. Cada elemento es una fila, y cada fila es otro array con los nombres de las columnas.

Para escribirlas, recorres el array con foreach.

La lección continúa

10 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.