W3docs

Introduzione a PHP e MySQL

PHP e MySQL sono due delle tecnologie più usate per il web. Scopri come connetterle, creare tabelle, inserire e leggere dati in modo sicuro.

PHP e MySQL sono due delle tecnologie più popolari per lo sviluppo web e sono progettate per lavorare insieme. PHP viene eseguito sul server e genera l'HTML che i visitatori vedono; MySQL memorizza i dati di cui quelle pagine hanno bisogno — utenti, post, ordini, commenti. Quasi ogni sito dinamico che utilizzi (un blog, un forum, un negozio online) è costruito su questa coppia o su qualcosa di molto simile.

Questa pagina spiega cosa fa ciascuna tecnologia, i due modi in cui PHP comunica con MySQL e un flusso di lavoro completo ed eseguibile: connettersi, creare una tabella, inserire dati e leggerli di nuovo. Alla fine saprai quali strumenti usare e dove andare per approfondire ogni operazione.

Cos'è PHP?

PHP sta per PHP: Hypertext Preprocessor ed è un linguaggio di scripting lato server. "Lato server" significa che il codice viene eseguito sul server web prima che qualsiasi cosa venga inviata al browser — il visitatore non vede mai il PHP, solo l'HTML che produce. Poiché PHP può leggere l'input dell'utente, comunicare con un database e costruire una pagina diversa per ogni richiesta, viene utilizzato per siti di e-commerce, forum, blog e qualsiasi applicazione che cambia in base ai dati.

Cos'è MySQL?

MySQL è un sistema di gestione di database relazionali (RDBMS). "Relazionale" significa che i dati vivono in tabelle composte da righe e colonne — una tabella users, una tabella products — e le tabelle possono fare riferimento l'una all'altra. PHP invia comandi a MySQL usando SQL (Structured Query Language), il linguaggio standard per chiedere a un database di archiviare o restituire dati. MySQL mantiene i dati al sicuro sul disco tra una richiesta e l'altra, in modo che le informazioni inserite oggi siano ancora disponibili la settimana prossima.

Perché usare PHP e MySQL insieme?

  • Gratuiti e open-source. Entrambi sono liberi da usare e distribuire, quindi puoi costruire e ospitare un'applicazione completa senza costi di licenza.
  • Scalabili. Lo stesso stack può gestire un blog personale o un sito ad alto traffico — aggiungi risorse man mano che dati e traffico crescono.
  • Facili da imparare e ben documentati. PHP ha una curva di apprendimento graduale, MySQL è ovunque e la grande comunità significa che la maggior parte dei problemi che incontri è già risolta online.
  • Ampiamente supportati. Quasi ogni provider di hosting offre PHP e MySQL pronte all'uso, e grandi aziende si affidano a questa combinazione in produzione.

Due modi per connettersi: MySQLi vs. PDO

PHP include due moderne estensioni per il database. Dovresti sceglierne una e usarla in modo coerente per un progetto:

MySQLiPDO
Funziona conSolo MySQL12+ database (MySQL, PostgreSQL, SQLite…)
Stili APIProcedurale e orientato agli oggettiSolo orientato agli oggetti
Prepared statements
Ideale quandoSei sicuro di usare solo MySQLPotresti cambiare database in futuro

Evita le vecchie funzioni mysql_* che puoi trovare in vecchi tutorial. Sono state rimosse in PHP 7 e sono insicure. Usa MySQLi o PDO.

Entrambe le estensioni supportano i prepared statements, che è la singola funzionalità di sicurezza più importante qui — impediscono gli attacchi di SQL injection. Vedi MySQL Prepared Statements per la spiegazione completa.

Connettersi a un database MySQL

Una connessione richiede quattro elementi: l'host, un nome utente, una password e il nome del database. L'esempio seguente usa lo stile procedurale di MySQLi e controlla gli errori prima di continuare.

<?php
   $host     = 'localhost';
   $user     = 'username';
   $password = 'password';
   $dbname   = 'database_name';

   // Create connection
   $conn = mysqli_connect($host, $user, $password, $dbname);

   // Always check the connection before doing anything else
   if (!$conn) {
       die("Connection failed: " . mysqli_connect_error());
   }
   echo "Connected successfully";
?>

Per lo stile orientato agli oggetti di MySQLi, un esempio PDO completo e la risoluzione dei problemi di connessione, vedi Connecting PHP to MySQL e PHP MySQLi.

Il flusso di lavoro tipico

Una volta connesso, quasi tutto ciò che fai con un database è una delle quattro operazioni, spesso chiamate CRUD — Create, Read, Update, Delete. Ognuna corrisponde a un'istruzione SQL e ha il proprio capitolo:

  1. Crea una tabella per definire dove vivono i dati — vedi Create a MySQL Table.
  2. Inserisci righe di dati — vedi Insert Data into MySQL.
  3. Leggi (seleziona) i dati — vedi Select Data from MySQL.
  4. Aggiorna righe esistenti — vedi Update Data in MySQL.
  5. Elimina le righe di cui non hai più bisogno — vedi Delete Data in MySQL.

Di solito si filtrano i risultati con una clausola WHERE e li si ordina con ORDER BY.

Un esempio mini completo

Questo script si connette, crea una tabella users se non esiste, inserisce una riga e poi legge tutto indietro. Usa un prepared statement per l'inserimento in modo che i valori forniti dall'utente non possano compromettere la query.

<?php
   $conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
   if (!$conn) {
       die("Connection failed: " . mysqli_connect_error());
   }

   // 1. Create a table
   mysqli_query($conn, "
       CREATE TABLE IF NOT EXISTS users (
           id    INT AUTO_INCREMENT PRIMARY KEY,
           name  VARCHAR(50),
           email VARCHAR(100)
       )
   ");

   // 2. Insert a row safely with a prepared statement
   $stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");
   mysqli_stmt_bind_param($stmt, "ss", $name, $email);
   $name  = "Ada Lovelace";
   $email = "[email protected]";
   mysqli_stmt_execute($stmt);

   // 3. Read the data back
   $result = mysqli_query($conn, "SELECT id, name, email FROM users");
   while ($row = mysqli_fetch_assoc($result)) {
       echo $row['id'] . ": " . $row['name'] . " (" . $row['email'] . ")\n";
   }

   mysqli_close($conn);
?>

L'argomento "ss" indica a MySQL che entrambi i valori associati sono stringhe. Poiché i valori vengono associati separatamente dal testo SQL, un attaccante non può iniettare SQL malevolo attraverso il campo name o email.

Errori comuni

  • Dimenticare di controllare la connessione. Se le credenziali o l'host sono errati, ogni chiamata successiva fallisce silenziosamente. Usa sempre die() o gestisci l'errore subito dopo la connessione.
  • Costruire query con concatenazione di stringhe. Inserire l'input dell'utente direttamente in una stringa SQL apre la porta alla SQL injection. Usa invece i prepared statements.
  • Lasciare gli errori del database visibili agli utenti. In produzione, registra gli errori invece di stampare mysqli_connect_error() sulla pagina — potrebbe rivelare dettagli del server.

Conclusione

PHP e MySQL ti permettono di costruire siti web dinamici e basati sui dati con strumenti gratuiti e ben supportati. Connettiti con MySQLi o PDO, usa sempre i prepared statements per l'input dell'utente e ricorda che quasi ogni attività sul database è semplicemente una delle quattro operazioni CRUD. Da qui, segui i link del flusso di lavoro qui sopra per imparare ogni operazione in profondità.

Pratica

Pratica
Quale funzionalità forniscono le funzioni PHP MySQL?
Quale funzionalità forniscono le funzioni PHP MySQL?
Was this page helpful?