back to top

Estensioni PHP per l’interazione con i database

Come è noto PHP è un linguaggio di sviluppo Server Side per la realizzazione di Web applications concepito per la generazione dinamica dei contenuti; questi ultimi possono essere di diverso tipo (testi, immagini, file, markup HTML..) e avere diverse origini, un contenuto infatti può essere il risultato di un calcolo matematico oppure può essere prelevato da una fonte di dati, come per esempio un file di testo, un documento XML o un database.

Tra i database più utilizzati per l’interazione con PHP deve essere annoverato, sicuramente, il noto RDBMS (Relational Database Managment System) MySQL, una soluzione per lo storage e la manipolazione dei dati rilasciata sotto licenza Open Source oggi implementata all’interno dei laboratori della Oracle.

La scelta di utilizzare un engine come MySQL nella creazione di applicazioni Internet basate su PHP presenta numerosi vantaggi: innanzitutto la sua natura "relazionale" permette di utilizzare archivi di informazioni nei quali le relazioni tra i dati memorizzati sono già definite attraverso uno schema (o pattern progettuale), lo sviluppatore potrà poi sfruttare quest’ultimo per inserire, estrarre, aggiornare e cancellare dati. Uno schema di tipo "uno ad uno", potrà per esempio mettere in relazione un utente con le sue impronte digitali in un sistema di autenticazione; uno schema di tipo "uno a molti" potrà per esempio relazionare un autore con tutte le sue opere, infine, uno schema "molti a molti" potrebbe mettere in relazione gli studenti di un corso con tutti i testi sui quali hanno studiato.

Ma, oltre alla sua relativa facilità d’uso rispetto ad applicazioni dello stesso tipo (si pensi per esempio a PostgreSQL), l’utilizzo di un RDBMS come MySQL in alternativa a soluzioni basate su semplici file di testo o altre fonti di informazioni non relazionali, presenta anche un altro vantaggio: esso infatti dispone nativamente di un proprio linguaggio (una sorta di "dialetto" del linguaggio SQL) che permetterà di agire direttamente sulle relazioni tra i dati e sui dati stessi. In questo modo PHP non dovrà disporre di costrutti propri finalizzati a tale scopo, ma potrà sfruttare SQL per inviare istruzioni all’engine che si occuperà poi della loro esecuzione.

Perché PHP possa interagire con le basi di dati di MySQL abbiamo la necessità di disporre di apposite librerie, queste ultime rappresenteranno l’interfaccia attraverso la quale le applicazioni potranno autenticarsi con l’engine, connettersi ad esso, selezionare i database con cui operare e utilizzare i dati archiviati; nello specifico, per l’interazione con MySQL il linguaggio dispone di tre diverse estensioni:

  1. PDO (PHP Data Objects): si tratta di una libreria introdotta con la versione 5 di PHP che fornisce un livello di astrazione (Abstraction Layer) grazie al quale il codice basato su di essa potrà essere riutilizzato indipendentemente dal database relazionale di riferimento; ciò significa che, per esempio, la portabilità di un’applicazione da un ambiente basato su MySQL ad un altro basato su PostgreSQL non richiederà la sua riscrittura da zero.
  2. MySQLi (MySQL improveded): si tratta di un’estensione pensata specificatamente per MySQL e introdotta in PHP, come PDO, con la versione 5; essa rappresenta in pratica un’evoluzione rispetto alle MySQL functions (che descriveremo di seguito) in quanto è stata concepita per sfruttare alcune funzionalità introdotte in MySQL 4.1.3 che non erano state implementate in queste ultime.
  3. MySQL functions: esse rappresentano la prima forma di supporto offerta da PHP per l’interazione con MySQL, con il passare degli anni il loro sviluppo non ha tenuto il passo con l’evoluzione del linguaggio e la community di PHP ha preferito puntare su PDO (in particolare) e MySQLi; con il rilascio di PHP 5.5 le MySQL functions sono state classificate come deprecate (ancora disponibili ma il cui utilizzo viene sconsigliato) e verranno definitivamente rimosse nel prossimo futuro.

PDO e MySQLi mettono a disposizione alcuni ulteriori vantaggi rispetto alle MySQL functions, esse infatti danno nativamente la possibilità di sfruttare un approccio basato sul paradigma orientato agli oggetti (OOP, Object Oriented Programming), garantiscono in genere prestazioni più elevate, supportano funzionalità avanzate di MySQL (query multiple, transazioni..) e sono in linea di massima più sicure grazie al meccanismo dei prepared statements in alternativa all’esecuzione diretta delle istruzioni SQL che descriveremo a breve nel corso delle presente trattazione.

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.