En aquesta secció, aprendrem com integrar una base de dades en la nostra aplicació web PHP. Això inclou la configuració de la connexió, la realització d'operacions bàsiques i la gestió de dades de manera eficient i segura.

Objectius d'Aprenentatge

  • Configurar la connexió a una base de dades MySQL.
  • Realitzar operacions CRUD (Crear, Llegir, Actualitzar, Esborrar).
  • Utilitzar PDO per a una interacció segura amb la base de dades.
  • Implementar pràctiques de seguretat per protegir les dades.

  1. Configuració de la Connexió a la Base de Dades

Exemple de Connexió amb MySQL Utilitzant PDO

<?php
$host = '127.0.0.1';
$db = 'nom_de_la_base_de_dades';
$user = 'usuari';
$pass = 'contrasenya';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
    echo "Connexió establerta!";
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
?>

Explicació del Codi

  • $host: L'adreça del servidor de la base de dades.
  • $db: El nom de la base de dades.
  • $user: El nom d'usuari per accedir a la base de dades.
  • $pass: La contrasenya per a l'usuari.
  • $charset: El conjunt de caràcters utilitzat per la base de dades.
  • $dsn: La cadena de connexió que inclou el tipus de base de dades, l'host, el nom de la base de dades i el conjunt de caràcters.
  • $options: Opcions per configurar el comportament de PDO.
  • try-catch: Bloc per gestionar errors de connexió.

  1. Realització d'Operacions CRUD

Crear (Insertar Dades)

<?php
$sql = "INSERT INTO usuaris (nom, email) VALUES (?, ?)";
$stmt= $pdo->prepare($sql);
$stmt->execute(['Nom d'Usuari', '[email protected]']);
?>

Llegir (Recuperar Dades)

<?php
$sql = "SELECT * FROM usuaris WHERE email = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(['[email protected]']);
$usuari = $stmt->fetch();
print_r($usuari);
?>

Actualitzar Dades

<?php
$sql = "UPDATE usuaris SET nom = ? WHERE email = ?";
$stmt= $pdo->prepare($sql);
$stmt->execute(['Nou Nom', '[email protected]']);
?>

Esborrar Dades

<?php
$sql = "DELETE FROM usuaris WHERE email = ?";
$stmt= $pdo->prepare($sql);
$stmt->execute(['[email protected]']);
?>

  1. Ús de PDO per a la Interacció amb Bases de Dades

Avantatges de PDO

  • Seguretat: Protegeix contra injeccions SQL utilitzant sentències preparades.
  • Portabilitat: Suporta múltiples tipus de bases de dades (MySQL, PostgreSQL, SQLite, etc.).
  • Flexibilitat: Proporciona una API consistent per a la interacció amb bases de dades.

Sentències Preparades

Les sentències preparades són una manera segura d'executar consultes SQL amb paràmetres. Això ajuda a prevenir injeccions SQL.

<?php
$sql = "SELECT * FROM usuaris WHERE email = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(['[email protected]']);
$usuari = $stmt->fetch();
?>

  1. Seguretat en Bases de Dades

Pràctiques Recomanades

  • Utilitzar Sentències Preparades: Sempre utilitzar sentències preparades per evitar injeccions SQL.
  • Validar i Sanitzar Dades: Validar i sanitzar totes les dades d'entrada abans de processar-les.
  • Gestió d'Errors: No mostrar missatges d'error detallats a l'usuari final. Utilitzar registres d'errors per a la depuració.

Exemple de Validació i Sanitització

<?php
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($email === false) {
    die('Email no vàlid');
}

$nom = filter_input(INPUT_POST, 'nom', FILTER_SANITIZE_STRING);
?>

Exercici Pràctic

Tasca

  1. Crea una base de dades anomenada biblioteca amb una taula llibres que tingui les següents columnes: id, títol, autor, any.
  2. Escriu un script PHP per connectar-te a la base de dades biblioteca.
  3. Implementa operacions CRUD per a la taula llibres.

Solució

<?php
// Connexió a la base de dades
$host = '127.0.0.1';
$db = 'biblioteca';
$user = 'usuari';
$pass = 'contrasenya';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
    echo "Connexió establerta!";
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

// Crear (Insertar Dades)
$sql = "INSERT INTO llibres (títol, autor, any) VALUES (?, ?, ?)";
$stmt= $pdo->prepare($sql);
$stmt->execute(['El Quixot', 'Miguel de Cervantes', 1605]);

// Llegir (Recuperar Dades)
$sql = "SELECT * FROM llibres WHERE autor = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(['Miguel de Cervantes']);
$llibre = $stmt->fetch();
print_r($llibre);

// Actualitzar Dades
$sql = "UPDATE llibres SET any = ? WHERE títol = ?";
$stmt= $pdo->prepare($sql);
$stmt->execute([1615, 'El Quixot']);

// Esborrar Dades
$sql = "DELETE FROM llibres WHERE títol = ?";
$stmt= $pdo->prepare($sql);
$stmt->execute(['El Quixot']);
?>

Conclusió

En aquesta secció, hem après com integrar una base de dades en una aplicació PHP utilitzant PDO. Hem cobert la configuració de la connexió, la realització d'operacions CRUD i les pràctiques de seguretat. Aquestes habilitats són fonamentals per desenvolupar aplicacions web robustes i segures. En la següent secció, ens centrarem en les proves i el desplegament de la nostra aplicació.

Curs de Programació PHP

Mòdul 1: Introducció a PHP

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Arrays

Mòdul 5: Treballant amb Formularis

Mòdul 6: Treballant amb Fitxers

Mòdul 7: Programació Orientada a Objectes (OOP)

Mòdul 8: Treballant amb Bases de Dades

Mòdul 9: Tècniques Avançades de PHP

Mòdul 10: Frameworks PHP i Millors Pràctiques

Mòdul 11: Projecte: Construint una Aplicació Web

© Copyright 2024. Tots els drets reservats