Corso PHP: 24.3 – Accedere a MySQL da PHP (Parte 4^)

24.3.3 Aggiornamento records del database

Una volta che il vostro database è popolato con le informazioni precedentemente inserite capiterà di doverle modificare. Ad esempio si dovrà modificare un indirizzo di un cliente, un numero di telefono ecc.

Per aggiornare uno o più records di un database MySQL si usa il comando UPDATE.

La sintassi che troverete sul manuale è riportata di seguito:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

Anche in questo caso però non tutte le clausole sono sempre necessarie. La forma più semplice ed essenziale è:

UPDATE table_name
SET col_name1=value, col_name2=value2,...
WHERE where_condition

Sostanzialmente dobbiamo indicare la tabella ove dobbiamo portare degli aggiornamenti (table_name), i campi che vogliamo modificare (col_name1, ecc.) e naturalmente su quale record dobbiamo apportare queste modifiche (where_condition). E’ evidente come si possano apportare modifiche su più records contemporaneamente indicando una opportuna clausola where che identifichi appunto questi records. Questo potrà essere necessario nel caso vi sia un errore ripetuto su molti records come per esempio un paese assegnato ad una provincia sbagliata o la modifica di una codifica per ragioni di programmazione.

La clausola ORDER BY sarà utile se vogliamo che la tabella venga letta in un determinato ordine; potremo indicare il nome di un campo e la tabella verrà letta con i records ordinati secondo i valori ascendenti di quella colonna. Se viceversa vogliamo l’ordinamento inverso aggiungeremo la parola DESC alla clausola. La clausola è la stessa che si usa nel comando SELECT.

La clausola LIMIT ha lo scopo di limitare la selezione dei records al numero indicato nella clausola nella forma LIMIT primo_record_da_leggere, numero_dei_records_da_leggere.

Vediamone l’uso con un esempio nei due casi di utilizzo di Mysqli oppure PDO.
a) Primo caso: utilizzo di Mysqli

Nel caso di uso di Mysqli, ricordiamo, la funzione per eseguire la query è quella già vista:

mysqli_query (mysqli $link , string $query)

che ritorna il valore booleano TRUE o FALSE a seconda che l’esecuzione della query sia andata a buon fine o no.

Come esempio vediamo di aggiornare i dati di indirizzo di un cliente nella tabella clienti del nostro database di Gestione Ordini (paragr. 24.2 alla pagina http://www.weweb.in/2016/03/12/corso-php-24-mysql/)

Supponendo che i valori dei campi del cliente da modificare siano memorizzati nelle variabili $ind, $citta, ecc., inseriremo il nuovo record come segue:

<?php
session_start();
include_once("includes/config.mysqli.php");
$query = "UPDATE clienti SET c_indirizzo=$ind, c_citta=$citta, c_pv= $pv, c_cap=$cap, c_telefono=$tel, c_email=$email WHERE id='$id'";
$result = mysqli_query($sql, $query);
if (!$result) die ("Errore nell'inserimento del cliente: " . mysql_error());
?>

b) Secondo caso: utilizzo di PDO

Nel caso di uso di PDO lo script sarà il seguente:

 

<?php
session_start();
include_once("includes/config.pdo.php");
$query = "UPDATE clienti SET c_indirizzo= :ind, c_citta=:citta, c_pv= :pv, c_cap=:cap, c_telefono=:tel, c_email=:email WHERE id='$id'";
$sql = $db->prepare($query);
$sql->bindParam(':ind', $ind);
$sql->bindParam(':citta', $citta);
$sql->bindParam(':pv', $pv);
$sql->bindParam(':cap', $cap);
$sql->bindParam(':tel', $tel);
$sql->bindParam(':email', $email);
if ($sql) $sql->execute();
else print_r($db->errorInfo());
$sql->close();
?>

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *