Home
  • Php
  • PHP MySQL Tutorial di base - Lezione 11 - Delete
re-verse
pubblicato circa un anno fa

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






idnomelivello
2Mario Bianchi5
3Michele Verdi3
4Simona Neri4

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:

  • Current rating: 5.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic