back to top

PHP: inserimento di dati in una tabella MySQL con PDO

Anche per le operazioni relative all’inserimento dei dati nella tabella "contatti" precedentemente creata verrà seguita una procedura per molti versi simile a quella proposta in precedenza; motivo per il quale si stabilirà una connessione al DBMS, si selezionerà il database da utilizzare, verrà utilizzato il metodo exec() per l’esecuzione delle istruzioni SQL, sarà chiusa la connessione in caso di esito positivo o segnalate eventuali eccezioni in fase di esecuzione.

Nel caso specifico però l’applicazione prevede di effettuare due diversi inserimenti per due record distinti, motivo per il quale il codice proposto di seguito presenterà alcune piccole (ma non per questo irrilevanti) novità che saranno analizzate nel dettaglio:

<?php
/*
  blocco dei parametri di connessione
*/
// nome di host
$host = "localhost";
// nome del database
$db = "nominativi";
// username dell'utente in connessione
$user = "mrwebmaster";
// password dell'utente
$password = "...";

/*
  blocco try/catch di gestione delle eccezioni
*/
try {
  // stringa di connessione al DBMS
  $connessione = new PDO("mysql:host=$host;dbname=$db", $user, $password);
  // impostazione dell'attributo per il report degli errori
  $connessione->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // popolo la tabella con due record
  $inserisci_dati = $connessione->exec("INSERT INTO contatti (nome, cognome) VALUES ('Giuseppe', 'Garibaldi')");
  $inserisci_dati_2 = $connessione->exec("INSERT INTO contatti (nome, cognome) VALUES ('Silvio', 'Pellico')");
  // visualizza l'identificatore univoco dell'ultimo inserimento effettuato
  // in questo caso stampa la cifra "2"
  echo $connessione->lastInsertId();
  // chiusura della connessione
  $connessione = null;
}
catch(PDOException $e)
{
  // notifica in caso di errore nel tentativo di connessione
  echo $e->getMessage();
}
?>

Analizzando il codice si noti come l’handle $connessione e il metodo exec() possano essere richiamati due (o più) volte per eseguire distinte operazioni di inserimento:

$inserisci_dati = $connessione->exec("INSERT INTO contatti (nome, cognome) VALUES ('Giuseppe', 'Garibaldi')");
$inserisci_dati_2 = $connessione->exec("INSERT INTO contatti (nome, cognome) VALUES ('Silvio', 'Pellico')");

in entrambi i casi verranno popolati tramite istruzioni i campi "nome" e "cognome" della tabella "contatti", il campo "id" invece, essendo un auto-incrementale, provvederà ad aggiornarsi in modo autonomo tramite incremento numerico.

Per verificare che tale evenienza si verifichi correttamente è possibile richiamare il metodo lastInsertId() che, senza la necessità del passaggio di alcun parametro, consentirà di visualizzare l’identificatore dell’ultimo inserimento effettuato tramite istruzione.

Ora che sono stati inseriti i primi record in tabelle, nel prossimo capitolo verrà affrontato il discorso relativo alla loro lettura tramite PDO e le istruzioni SQL, ciò continuando a seguire lo schema CRUD (Create, Read, Update, Delete) che rappresenta il pattern più completo per la gestione dei dati presenti in un database.

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.