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@exemple.com']); ?>
Llegir (Recuperar Dades)
<?php $sql = "SELECT * FROM usuaris WHERE email = ?"; $stmt = $pdo->prepare($sql); $stmt->execute(['email@exemple.com']); $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@exemple.com']); ?>
Esborrar Dades
<?php $sql = "DELETE FROM usuaris WHERE email = ?"; $stmt= $pdo->prepare($sql); $stmt->execute(['email@exemple.com']); ?>
- Ú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@exemple.com']); $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
bibliotecaamb una taulallibresque 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ó
