UPDATE Query con PDO

Anche UPDATE è un comando di tipo DML e quindi non ha valori di return (come anche le query INSERT e DELETE).

La query UPDATE con PDO si effettua in questo modo:

  1. Si crea una normale UPDATE query in SQL;
  2. Si rimpiazzano i valori da inserire nella tabella con i placeholders;
  3. Si prepara la query risultante con prepare();
  4. Si effettua il bind dei valori da inserire nel metodo execute;
  5. Si esegue la query risultante dal prepare() passando i valori sotto forma di array all’execute().

UPDATE Query con positional placeholders

Grazie all’uso dei positional placeholders, la query risulta più snella e facile da impostare:

$sql = "UPDATE users SET name=?, lastname=?, sex=? WHERE id=?";
$stmt= $pdo->prepare($sql);
$stmt->execute([$name, $lastname, $sex, $id]);

La stessa query, ma scritta con la tecnica del method chaining:

$sql = "UPDATE users SET name=?, lastname=?, sex=? WHERE id=?";
$pdo->prepare($sql)->execute([$name, $lastname, $sex, $id]);

UPDATE Query con named placeholders

Possiamo scrivere la stessa query usando i named placeholders e impostando un array di valori da utilizzare:

$data = [
    'name' => $name,
    'lastname' => $lastname,
    'sex' => $sex,
    'id' => $id,
];

$sql = "UPDATE users SET name=:name, lastname=:lastname, sex=:sex WHERE id=:id";
$stmt= $pdo->prepare($sql);
$stmt->execute($data);

Anche in questo caso si possono concatenare prepare() ed execute():

$data = [
    'name' => $name,
    'lastname' => $surname,
    'sex' => $sex,
    'id' => $id,
];

$sql = "UPDATE users SET name=:name, lastname=:lastname, sex=:sex WHERE id=:id";
$pdo->prepare($sql)->execute($data);

Come per INSERT, anche per UPDATE bisogna effettuare il bind dei parametri utilizzando un metodo tra bindValue() oppure bindParam(), anche se il primo sarebbe da preferire in quanto non dà la possibilità di cambiare il valore della variabile assegnata in seguito al bind. Ed essendo un comando di tipo DML può essere annullato solamente se l’intera query viene utilizzata all’interno di una transazione.

Ricordiamo inoltre che sarebbe meglio non utilizzare il costrutto try…catch per gestire gli errori, lasciando a PHP l’onere di segnalare eventuali errori di connessione.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.