back to top

PHP: connettersi ad un database MySQL con PDO

Innanzitutto, se nella versione corrente di PHP non dovesse essere abilitata l’estensione PDO sarà possibile effettuare tale operazione in modo molto semplice, questo perché per utilizzare tale modulo non sono richieste librerie esterne. Il driver di PHP per PDO è stato abilitato in modalità predefinita con PHP 5.1.0, motivo per il quale il file di configurazione del linguaggio, PHP.ini, dovrebbe presentare già la seguente riga decommentata (cioè non preceduta dal punto e virgola. ";"):

extension=pdo.so

Se siete su un sistema Windows la riga in questione sarà:

extension=php_pdo.dll

Ora, sempre tramite PHP.ini, sarà possibile attivare il supporto di PDO per MYSQL decommentando (cioè rimuovendo il ";") dalla riga:

extension=pdo_mysql.so

oppure, se siete su Windows:

extension=php_pdo_mysql.dll

Una volta salvata la modifica effettuata e riavviato il Web server di riferimento, tale impostazione diventerà finalmente operativa e si potrà cominciare ad utilizzare PDO per le operazioni che prevedono di interfacciare le Web applications ai database basati su tale engine.

Come con qualsiasi altra libreria per l’interazione tra PHP e MySQL, anche in PDO è richiesta la connessione al DBMS prima di poter svolgere qualsiasi tipo di operazione per l’interazione con i dati. In sostanza, quando parliamo di "connessione" tra un’applicazione e un Database Manager stiamo descrivendo nel concreto una procedura di "autenticazione", ecco perché per portarla a termine dovremo disporre dei seguenti parametri che consentiranno alla prima di essere "riconosciuta" dal secondo:

  • il tipo di database (o "driver" di riferimento): dato che PDO supporta più tipologie di DBMS, in connessione si potrà specificare quella che si intende utilizzare, ad esempio "mysql" per MySQL; tale dato potrà poi essere sostituito dal nome del database con il quale operare nel caso in cui sia presente.
  • host: si tratta in pratica del riferimento al sistema che ospita l’installazione di MySQL, quest’ultimo potrà essere indicato in vari modi, per esempio tramite un indirizzo IP o un nome di dominio, ma nelle installazioni locali e in buona parte degli hosting Web sarà definibile tramite la stringa "localhost";
  • il nome del database da utilizzare: è il nome dello specifico database sul qualse si desidera operare; se non si è ancora creato alcun database specificare "mysql" oppure non specificare affatto nella stringa di connessione il parametro dbname;
  • utente (o "user"): è il nome di un utente al quale sono stati associati dei privilegi (più o meno elevati) per eseguire istruzioni a carico di uno o più database creati tramite MySQL, sostanzialmente l’applicazione opererà sui dati tramite quest’ultimo (quindi "facendosi riconoscere" come tale dal DBMS);
  • password: è la chiave utilizzata dall’utente per perfezionare e concludere la procedura di autenticazione.

Sintatticamente tali parametri vengono passati attraverso un’istanza per la creazione dell’oggetto PDO, ciò seguendo un ordine ben preciso:

// stringa di connessione al DBMS
$connessione = new PDO("mysql:host=host;dbname=mysql", "user", "password");

Nell’esempio seguente si vedrà come tali parametri possano essere passati anche sotto forma di informazioni contenute in variabili:

<?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);
  /*
  Avremmo potuto anche omettere dbname in questo modo:
  $connessione = new PDO("mysql:host=$host", $user, $password);
  */
  // notifica in caso di connessione effettuata
  echo "Connessione a MySQL tramite PDO effettuata.";
  // chiusura della connessione
  $connessione = null;
}
catch(PDOException $e)
{
  // notifica in caso di errore nel tentativo di connessione
  echo $e->getMessage();
}
?>

In sostanza lo script appena proposto rappresenta un template standard per la connessione a MySQL tramite PDO dove:

  • vengono definite le variabili che contengono i parametri di connessione;
  • i parametri vengono utilizzati per stabilire la connessione tramite istanza dell’oggetto PDO;
  • il blocco try/catch per la gestione delle eccezioni notifica l’avvenuta connessione o gestisce eventuali errori che dovessero verificarsi nel tentativo di stabilirla.

Una volta effettuata la connessione, se l’applicazione non dovesse prevedere altre operazioni sarà possibile chiuderla impostandone il valore su null.

Chiaramente nulla avrebbe impedito di eseguire la medesima operazione senza il ricorso alle variabili, infatti l’istanza avrebbe accettato anche il passaggio dei parametri di connessione nella loro forma originale:

//stringa di connessione al DBMS senza passaggio di variabili  
$connessione = new PDO("mysql:host=localhost;dbname=mysql", "mrwebmaster", "...");

Nel prossimo capitolo verrà analizzata una procedura più avanzata, cioè quella relativa alla creazione del database e sarà affrontata più nel dettagli la parte relativa alla gestione delle eccezioni.

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.