10 – PHP e Database (MySQL)
Obiettivi
-
Comprendere i fondamenti dei database relazionali.
-
Collegare PHP a un database MySQL.
-
Eseguire query SQL di base per gestire dati.
-
Creare un’applicazione web che utilizza un database per la persistenza.
Contenuti
🔹 Introduzione a MySQL e phpMyAdmin
-
MySQL è un DBMS relazionale molto diffuso per applicazioni web.
-
I dati sono organizzati in tabelle composte da righe (record) e colonne (campi).
-
phpMyAdmin è un’interfaccia grafica web che permette di gestire facilmente database, tabelle e query.
-
Comandi principali in SQL:
-
CREATE DATABASE nome; → crea un nuovo database.
-
CREATE TABLE utenti (...); → crea una tabella.
-
🔹 Connessione al Database con PHP
Esistono due principali approcci:
-
mysqli (MySQL Improved)
<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "rubrica";
// Connessione procedurale
$conn = mysqli_connect($host, $user, $pass, $dbname);
if (!$conn) {
die("Connessione fallita: " . mysqli_connect_error());
}
echo "Connessione avvenuta con successo!";
?>
-
PDO (PHP Data Objects) – più flessibile e sicuro:
<?php
try {
$conn = new PDO("mysql:host=localhost;dbname=rubrica", "root", "");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connessione avvenuta con successo!";
} catch (PDOException $e) {
echo "Errore: " . $e->getMessage();
}
?>
🔹 Query SQL di Base
-
Inserimento dati
$sql = "INSERT INTO contatti (nome, telefono) VALUES ('Mario Rossi', '3331234567')";
mysqli_query($conn, $sql);
-
Selezione dati
$sql = "SELECT * FROM contatti";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
echo $row['nome'] . " - " . $row['telefono'] . "<br>";
}
-
Aggiornamento dati
$sql = "UPDATE contatti SET telefono='3337654321' WHERE nome='Mario Rossi'";
mysqli_query($conn, $sql);
-
Eliminazione dati
$sql = "DELETE FROM contatti WHERE nome='Mario Rossi'";
mysqli_query($conn, $sql);
🔹 Esercizio: Rubrica Online con Database
Descrizione:
Creiamo una rubrica online con le seguenti funzionalità:
-
Aggiungere un contatto (nome e numero).
-
Visualizzare i contatti salvati.
-
Eliminare un contatto.
Struttura tabella MySQL:
CREATE TABLE contatti (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50) NOT NULL,
telefono VARCHAR(15) NOT NULL
);
index.php – Visualizza i contatti e form di inserimento:
<?php
$conn = mysqli_connect("localhost", "root", "", "rubrica");
// Inserimento nuovo contatto
if (isset($_POST['nome']) && isset($_POST['telefono'])) {
$nome = $_POST['nome'];
$telefono = $_POST['telefono'];
$sql = "INSERT INTO contatti (nome, telefono) VALUES ('$nome', '$telefono')";
mysqli_query($conn, $sql);
}
// Eliminazione contatto
if (isset($_GET['delete'])) {
$id = $_GET['delete'];
$sql = "DELETE FROM contatti WHERE id=$id";
mysqli_query($conn, $sql);
}
// Recupero contatti
$result = mysqli_query($conn, "SELECT * FROM contatti");
?>
<!DOCTYPE html>
<html>
<head>
<title>Rubrica Online</title>
</head>
<body>
<h2>Aggiungi Contatto</h2>
<form method="POST">
Nome: <input type="text" name="nome" required><br>
Telefono: <input type="text" name="telefono" required><br>
<button type="submit">Salva</button>
</form>
<h2>Rubrica</h2>
<ul>
<?php while($row = mysqli_fetch_assoc($result)) { ?>
<li>
<?php echo $row['nome'] . " - " . $row['telefono']; ?>
<a href="?delete=<?php echo $row['id']; ?>">❌</a>
</li>
<?php } ?>
</ul>
</body>
</html>
📝 Test di Verifica
-
Qual è la differenza tra
mysqliePDO? -
Scrivi la query SQL per aggiornare il numero di telefono di un contatto con
id=3. -
Qual è il vantaggio di usare
phpMyAdmin? -
Come si definisce una tabella in SQL?
-
Cosa succede se non si sanitizzano gli input nei form che interagiscono con il database?

Nessun commento:
Posta un commento