Commenti(0)
PHP MySQL Tutorial di base - Lezione 11 - Delete
Affronteremo insieme in questo nuovo articolo come eliminare dei record da una tabella MySQL attraverso PHP. Esamineremo qualche caso pratico in modo da renderci conto quando si richiede questo comando e come eseguirlo correttamente senza rischiare di eliminare qualcosa di troppo.
PHP – MySQL: Delete
Eliminare righe da una tabella è un'operazione molto comune. Questa operazione può richiedersi nel caso in cui bisogna eliminare un post da un forum, un prodotto da un inventario, oppure tornando al nostro esempio degli impiegati, quando un impiegato lascia l'azienda oppure ahimè viene licenziato.
Bene, in questi casi il comando MySQL che andremo ad utilizzare sarà il comando di DELETE.
Manteniamo il discorso della nostra precedente lezione ed immaginiamo che, una volta aumentato il livello della 'Simona Neri' che era già al 3° ed è arrivata al 4°, l'altra Simona Neri che era al 2° livello abbia deciso di guardarsi intorno ed abbia trovato un altro lavoro, più bello, soddisfacente e renumerativo. Rassegnerà ovviamente le sue dimissioni immediate e ci sarà quindi bisogno di eliminare il suo record dalla nostra tabella.
Vediamo subito come eliminare un record con una DELETE da PHP:
1<?php 2// Stabiliamo una connessione MySQL 3mysql_connect("localhost", "root", "") or die(mysql_error()); 4mysql_select_db("test") or die(mysql_error()); 5 6// Eseguiamo una DELETE sulla tabella 'impiegati' 7$result = mysql_query("DELETE FROM impiegati WHERE id=1") 8or die(mysql_error()); 9 10echo "Eliminazione eseguita!!<br />"; 11?>
Risultato:
>>> Eliminazione eseguita!!
Come possiamo notare, sono intervenuto direttamente sulla chiave della tabella, e cioè sul campo 'id'. Se avessi eseguito la seguente query:
1$result = mysql_query("DELETE FROM impiegati WHERE nome='Simona Neri'");
analogamente a come poteva succedere con la UPDATE, avrei eliminato erroneamente un record in più. Siccome noi non vogliamo questo, interveniamo su un record identificandolo con il suo 'id' univoco.
In linea di massima, tutto quello che viene dopo la WHERE funziona allo stesso modo sia per le SELECT, UPDATE e DELETE. Certo, poi ci sono le SELECT con raggruppamenti, ma in quel caso la WHERE non può essere strutturata allo stesso modo; immaginate una DELETE con una 'GROUP BY'? non avrebbe senso! :)
Fortunatamente, la 'Simona Neri' che ha rassegnato le sue dimissioni ora se la passa molto meglio di prima, quindi avremo effettuato questa DELETE con un bel sorriso stampato in faccia :)
La nostra tabella a questo punto conterrà più o meno i seguenti dati:
Tabella: impiegati
| id | nome | livello |
| 2 | Mario Bianchi | 5 |
| 3 | Michele Verdi | 3 |
| 4 | Simona Neri | 4 |
Se volessimo eliminare tutti i record di una tabella? Semplice!
Ci basterà non specificare la WHERE ed eseguire semplicemente la query:
1$result = mysql_query("DELETE FROM impiegati");
Tuttavia, c'è anche un altro modo per svuotare completamente una tabella. Il comando è TRUNCATE .
Eseguendo ad esempio:
1$result = mysql_query("TRUNCATE impiegati");
Otterremo come effetto lo svuotamento totale della tabella 'impiegati'.
Ovviamente, bisogna stare attenti: non eseguite TRUNCATE e DELETE tanto a cuor leggero! Potreste rischiare di perdere o compromettere dati importanti, per cui fate sempre molta attenzione a specificare bene le condizioni della vostra WHERE, e se manipolate dati importanti, prima di intervenire sarebbe opportuno avere una copia di backup per effettuare un ripristino in caso di errori.
Che ne dite di fare qualche prova con le DELETE?
Se volessi licenziare tutti gli impiegati con un livello più basso del 3° in che modo dovrei intervenire con la mia DELETE?
La soluzione è allegata, ma io consiglio sempre di trovarle prima noi le soluzioni e poi verificarle con i nostri allegati.
- Scarica l'esempio delete.zip
Condividi su:
Esprimi un voto:
Argomenti chiave:

MySQL Report un tool di shell per tenere tutto sotto controllo