Context engineering
10 – PHP e Database (MySQL)
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.
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.
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();
}
?>
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);
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>
Qual è la differenza tra mysqli e PDO?
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?
Commenti
Posta un commento