back to top

PHP: creare un nuovo database con PDO

Ora che sono state chiarite le operazioni necessarie per la connessione tra applicazione e MySQL con PDO, si potrà procedere con un esercizio basilare che prevede la creazione di un primo database, quest’ultimo sarà in pratica il "contenitore" all’interno del quale andremo a creare le tabelle destinate ad ospitare i dati da manipolare.

Come sarà possibile notare, per la generazione del database non saranno necessari più di due passaggi, e cioè: la precedentemente descritta connessione al DBMS e l’introduzione della necessaria istruzione SQL come parametro al metodo exec(), quest’ultimo ha infatti il compito di eseguire i comandi che delimita all’interno delle parentesi tonde.

Detto questo, sarà in pratica già possibile passare alla proposta del codice da utilizzare per portare a termine il compito prefissato:

<?php
/*
  blocco dei parametri di connessione
*/
// nome di host
$host = "localhost";
// nome del database
$db = "mysql";
// 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);
  // creazione del database
  $crea_db = $connessione->exec("CREATE DATABASE nominativi");
/*
  se si prova a crearlo due volte stamperà la notifica
  SQLSTATE[HY000]: General error: 1007 Can't create database 'nominativi'; database exists
*/
  // chiusura della connessione
  $connessione = null;
}
catch(PDOException $e)
{
  // notifica in caso di errore nel tentativo di connessione
  echo $e->getMessage();
}
?>

Analizzando il listato proposto, si nota come sia stata utilizzata la procedura per la connessione al Database engine descritta in precedenza; sono state infatti definite le variabili da passare all’istanza dell’oggetto PDO creando così un handle $connessione che, nello specifico, è stato utilizzato per eseguire tre compiti:

  1. richiamare il metodo setAttribute() al quale passare gli attributi PDO::ATTR_ERRMODE, per la reportistica degli errori, e PDO::ERRMODE_EXCEPTION, per il lancio delle eventuali eccezioni;
  2. richiamare il metodo ecex() a cui passare l’istruzione SQL per la creazione del database;
  3. chiudere la connessione tramite l’attribuzione di un non valore ("null").

Per quanto riguarda la gestione delle eccezioni, si noti come l’applicazione preveda più livelli di controllo: permetterà innanzitutto di inviare una segnalazione di errore nel caso in cui il database che si tenta di creare (chiamato nel nostro esempio "nominativi") sia già presente, questo perché per intuibili questioni legate all’ottimizzazione MySQL non consentirà la presenza di omonimie tra gli archivi; in secondo luogo verranno notificati eventuali errori d’esecuzione (legati per esempio all’utilizzo errato della sintassi SQL).

Ciò è reso possibile all’impiego della classe PDOException che permetterà di introdurre il metodo getMessage() utilizzabile per la stampa a video degli errori gestiti:

echo $e->getMessage();

Ora che si dispone di una base di dati sulla quale lavorare, sarà possibile procedere con la creazione di una tabella da generare all’interno di essa.

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.