Per prima cosa scriviamo una versione per PDO della funzione che avevamo già scritto per mysqli che visualizza tutte le righe della tabella product, e la mettiamo nella libreria delle nostre funzioni di utilità generale.
Accetta in input un parametro, l'handle PDO al database, chiamo su tale handle la funzione query() per fare la select di tutti i product, e sul resultset risultante faccio una foreach per scandire le righe risultanti (é una simpatica caratteristica della funzione query(), torna un resultset abilitato a gestire iteratori) e mi faccio una printf dei valori trovati:
function pdo_list_products($dbh)Fatta questa funzione di libreria, pensiamo alla nostra nuova pagina php. Qui vogliamo fare una update, per cambiare il nome di un nostro articolo in product. Scriviamo perciò una funzione che prende in input l'handle PDO e il nuovo nome che vogliamo dare all'articolo con codice ZP457321 (ammetto che é una funzione un po' poco realistica, ma va bene per lo scopo dimostrativo di questo post).
{
$query = "SELECT sku, name, price FROM products ORDER BY id";
foreach($dbh->query($query) as $row)
printf("(%s) %s: €%s<br />", $row['sku'], $row['name'], $row['price']);
}
Eseguendo lo statement sql di update via exec() abbiamo in output in numero di righe effettivamente modificate dalla update, informazione che rendiamo disponibile all'utente:
function update_aftershave($dbh, $name)E questo a seguire é il corpo principale del nostro script php. Ci connettiamo a PDO, tramite la funzione di libreria già vista nel post precedente, facciamo un primo printout della tabella con la nuova funzione di libreria pdo_list_products(), cambiamo una prima volta in nome del nostro articolo, e visualizziamo la nuova situazione a database, cambiamo una seconda volta il nome dell'articolo, e visualizziamo per l'ultima volta lo stato delle cose a database:
{
$query = "UPDATE products SET name='".$name."' WHERE sku='ZP457321'";
$affected = $dbh->exec($query);
echo "<p>Total rows affected: $affected</p>";
}
if(($dbh = dbo_connect()) == false)Si veda qui il codice sopra descritto in azione.
die();
pdo_list_products($dbh);
update_aftershave($dbh, "Painful Aftershave");
pdo_list_products($dbh);
update_aftershave($dbh, "Painless Aftershave");
pdo_list_products($dbh);
Nessun commento:
Posta un commento