back to top

MySQL functions: aggiornamento e cancellazione dei dati

I dati selezionabili e leggibili sono per loro natura anche dati "disponibili", motivo per il quale essi potranno essere aggiornati e cancellati tramite apposite istruzioni basate sui comandi SQL. Per quanto riguarda le procedure di modifica dei dati, queste dovranno essere basate sul comando UPDATE seguito dal nome della tabella coinvolta (nel nostro caso "nominativi"), dalla clausola SET, che introdurrà i campi i cui valori dovranno essere modificati e i valori necessari per la modifica, e infine dalla seconda clausola WHERE con cui determinare quale (o quali) record dovrà essere coinvolto nell’operazione. Nel caso specifico della tabella utilizzata per i nostri esempi tali passaggi saranno riassumibili tramite la seguente istruzione:

"UPDATE nominativi SET nome_utente = 'Bart', email_utente = '[email protected]' WHERE id_utente = 1"

Quest’ultima dovrà essere passata come parametro alla funzione mysql_query() che si occuperà di eseguirla; tale funzione verrà poi immediatamente richiamata per eseguire una seconda query, cioè la SELECT con cui estrarre i valori che sono stati aggiornati grazie al precedente UPDATE.

Fatto questo non rimarrà che recuperare i risultati della query in modo che divengano stampabili a video. ciò sarà possibile attraverso l’utilizzo della funzione mysql_fetch_array(); nell’esempio seguente, se mysql_num_rows() dovesse rilevare che i record coinvolti dalla SELECT sono in numero maggiore a zero, essa verrà impiegata all’interno di un ciclo che ad ogni iterazione stamperà i valori disponibili sulla base degli indici associativi (in pratica i campi di appartenenza) relativi ad essi.

<?php
/*
  aggiornamento dei dati in tabella
*/
// inclusione del file per la connessione e la selezione del database
include "connessione.php";

// query per l'aggiornamento dei dati
$query_update = mysql_query("UPDATE nominativi SET nome_utente = 'Bart', email_utente = '[email protected]' WHERE id_utente = 1") or die ("Impossibile eseguire la query: " . mysql_error());

// query per la selezione dei dati
$query_select = mysql_query("SELECT nome_utente, cognome_utente, email_utente FROM nominativi") or die ("Impossibile eseguire la query: " . mysql_error());

// controllo sul numero dei record coinvolti
if (mysql_num_rows($query_select) > 0){
  // ciclo per l'estrazione dei risultati
  while ($row = mysql_fetch_array($query_select)) {
    echo "Nome: " . $row['nome_utente'] . " Cognome: " . $row["cognome_utente"] . " Email: " . $row["email_utente"] . ".\n";
  }
}

// liberazione dai risultati in memoria
mysql_free_result($query_select);

// chiusura della connessione
mysql_close($connessione);
?>

Una volta ottenuto il risultato desiderato sarà possibile liberare le risorse occupate in seguito alla SELECT grazie alla funzione mysql_free_result(), mentre mysql_close() chiuderà la connessione al DBMS.

Il codice necessario per la rimozione di uno o più record è particolarmente semplice, esso in pratica si baserà sull’esecuzione tramite la funzione mysql_query() di un’istruzione SQL basata sul comando DELETE FROM seguito dal nome della tabella coinvolta (anche in questo caso "nominativi") e da una clausola WHERE che consentirà di definire con precisione il record interessato dalla cancellazione.

<?php
/*
  cancellazione dei dati in tabella
*/
// inclusione del file per la connessione e la selezione del database
include "connessione.php";

// query per la cancellazione dei dati
$query_delete = mysql_query("DELETE FROM nominativi WHERE id_utente = 1") or die ("Impossibile eseguire la query: " . mysql_error());

// chiusura della connessione
mysql_close($connessione);
?>

Una volta eseguita l’istruzione prevista, se la funzione mysql_error() non dovesse segnalare alcun errore sintattico o malfunzionamento l’eliminazione potrà considerarsi effettuata e mysql_close() provvederà alla chiusura della connessione.

Come anticipato nella descrizione delle medesime procedure affrontate tramite i costrutti di PDO e MySQLi, si ricorda che le operazioni di aggiornamento e cancellazione a carico dei dati archiviati in un database MySQL sono irreversibili e quindi, una volta effettuate, non potranno essere annullate.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.