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.
- 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ó.
- 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]']); ?>
- Ú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(); ?>
- 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
- Crea una base de dades anomenada
biblioteca
amb una taulallibres
que tingui les següents columnes:id
,títol
,autor
,any
. - Escriu un script PHP per connectar-te a la base de dades
biblioteca
. - 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
- Què és PHP?
- Configuració de l'Entorn de Desenvolupament
- El teu Primer Script PHP
- Sintaxi i Variables de PHP
- Tipus de Dades en PHP
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Àmbit de Variables
- Funcions Anònimes i Closures
Mòdul 4: Arrays
Mòdul 5: Treballant amb Formularis
Mòdul 6: Treballant amb Fitxers
- Lectura i Escriptura de Fitxers
- Funcions de Gestió de Fitxers
- Permisos de Fitxers
- Funcions de Directori
Mòdul 7: Programació Orientada a Objectes (OOP)
- Introducció a OOP
- Classes i Objectes
- Propietats i Mètodes
- Herència
- Interfícies i Classes Abstractes
- Traits
Mòdul 8: Treballant amb Bases de Dades
- Introducció a les Bases de Dades
- Connexió a una Base de Dades MySQL
- Realització d'Operacions CRUD
- Ús de PDO per a la Interacció amb Bases de Dades
- Seguretat en Bases de Dades
Mòdul 9: Tècniques Avançades de PHP
- Gestió d'Errors i Excepcions
- Sessions i Cookies
- Expressions Regulars
- Treballant amb JSON i XML
- PHP i Serveis Web
Mòdul 10: Frameworks PHP i Millors Pràctiques
- Introducció als Frameworks PHP
- Començant amb Laravel
- Arquitectura MVC
- Millors Pràctiques en Desenvolupament PHP
- Proves i Depuració