Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 8 di 56
  • livello intermedio
Indice lezioni

Mysqli: update e delete dei record

Completiamo le operazioni di amministrazione dei dati presenti in una tabella di MySQL con le procedure di update e di delete, cioè aggiornamento e cancellazione.
Completiamo le operazioni di amministrazione dei dati presenti in una tabella di MySQL con le procedure di update e di delete, cioè aggiornamento e cancellazione.
Link copiato negli appunti

Update dei record

Prima di procedere con il codice è doveroso un promemoria: le operazioni in scrittura sui database sono irreversibili, quindi occorre cautela e magari il buon senso suggerisce di testare i nostri script su un backup del database prima di perdere irrimediabilmente i dati presenti in esso.

// Connessione al database
$mysqli = new mysqli('localhost', 'root', 'root', 'biblioteca');
if ($mysqli->connect_error) {
die('Errore di connessione (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
}

A questo punto sarà comodo portare la connessione al database in un file esterno da includere. In questo modo non avremo in più punti del nostro codice dati che potrebbero essere modificati come user e password di accesso al database.

La prassi è avere una cartella include con un file contenente la connessione al database, che potremmo chiamare db.php, e quindi includere questo file nella nostra pagina .php.

Con la connessione a nostra disposizione ci serviranno i dati provenienti, normalmente via post, da un form che recupereremo in questo modo:

$id = $_POST['id'];
$user = $_POST['user'];
$pass = $_POST['password'];

Oltre ai dati da aggiornare avremo bisogno dell'id del record da aggiornare che useremo nella clausola WHERE per selezionare il record da aggiornare

La nostra password verrà criptata con lo stesso algoritmo utilizzato in fase di inserimento:

$password = hash('sha256', 'paperino');

A questo punto abbiamo tutto quanto ci potrà servire:

$query = $mysqli->prepare("UPDATE login SET user=?, password=? WHERE id = ? ");
$query->bind_param('ssi', $user, $password, $id);
$result = $query->execute();

In questo caso, dove la clausola WHERE è costituita dalla chiave primaria della nostra tabella e quindi al massimo avremo un solo record da aggiornare, potrebbe essere utile andare ad aggiungere anche la clausola LIMIT 1 in modo da accertarci che, al massimo, venga aggiornato un solo record. Ovviamente, nel caso di aggiornamento di più record con un'unica istruzione, non useremo la clausola LIMIT.

Eliminazione dei record

Prima di procedere all'eliminazione effettiva del record vale la pena verificare se è esattamente quello che vogliamo fare: infatti una volta eliminato non sarà più disponibile ed eventuali dati collegati in tabelle di relazione potrebbero non essere più accessibili. L'alternativa è quella di procedere ad un'eliminazione logica che altro non è che un normale update su un campo che determina la visibilità del record sull'interfaccia.

Qui ci occuperemo dell'eliminazione fisica del record dato che l'altro caso ricade nell'update visto precedentemente.

Per cancellare uno o più record ormai è solo una questione di istruzioni SQL, infatti il meccanismo sarà identico alla precedente query di update e lo schema sarà sempre "preparazione della query" + "bind dei parametri" + "esecuzione della query".

$query = $mysqli->prepare("DELETE FROM login WHERE id = ? ");
$query->bind_param('i', $id);
$result = $query->execute();

All'esecuzione della query il record verrà eliminato in modo definitivo dalla tabella del database. Come ricordato, per l'aggiornamento è utile valutare se inserire la clausola LIMIT per accertarsi che venga al massimo eliminato il numero di record stabilito.

Con quest'ultimo passaggio abbiamo completato il percorso definito dall'acronimo CRUD (Create-Read-Update-Delete) e quindi siamo in grado di compiere qualsiasi operazione sui dati del nostro database.

Ti consigliamo anche