Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 1 di 56
  • livello intermedio
Indice lezioni

MySQL functions, MySQLi, PDO: quale libreria scegliere?

Impariamo quale estensioni utilizzare scegliendo tra MySQL functions, MySQLi e PDO per realizzare applicazioni PHP che interagiscano con i database del DBMS MySQL.
Impariamo quale estensioni utilizzare scegliendo tra MySQL functions, MySQLi e PDO per realizzare applicazioni PHP che interagiscano con i database del DBMS MySQL.
Link copiato negli appunti

Collegarsi ad un database e interagire con i dati in esso archiviati è indubbiamente uno dei compiti principali di un sito Web dinamico costruito con PHP. Lo sviluppatore interessato a costruire delle applicazioni che possano colloquiare con MySQL, il DBMS (Database Management System) Open Source per la gestione di database relazionali più utilizzato in Rete con PHP, ha a sua disposizione principalmente tre scelte corrispondenti ad altrettante estensioni.

Principali differenze tra MySQL functions, MySQLi e PDO

  1. La prima possibilità, presente fin dalla versione 2.0 di PHP è rappresentata dall'estensione nativa per MySQL, che mette a disposizione numerose funzioni, ma che è stata deprecata a partire da PHP 5.5, e non viene più fornita dal linguaggio dalla versione 7. Quest'ultima consente un approccio alla programmazione di tipo esclusivamente procedurale, non presenta quindi una propria interfaccia per la programmazione ad oggetti. Attualmente questa tecnologia è sconsigliata dalla comunità di PHP per i nuovi progetti, sia per il mancato supporto all'OOP, sia perché non consente di accedere ad alcune tecniche particolarmente utili come le prepared statements e le stored procedures.
  2. La seconda possibilità, disponibile a partire da PHP 5.0, è l'impiego dell'estensione MySQLi (MySQL improved), che può essere programmata tramite un approccio Object Oriented sebbene mantenga la possibilità di poter essere utilizzata anche con un approccio procedurale. Comprende le API (Application Programming Interface) per le prepared statements e le stored procedures, ma anche per query multiple e transazioni.
  3. La terza possibilità è data dal ricorso all'estensione PHP Data Objects (PDO), completamente orientata agli oggetti, e che non può quindi essere utilizzata con un approccio procedurale. La caratteristica principale che differenzia questa estensione rispetto a MySQLi è che essa dispone di driver per diversi DBMS, non limitandosi esclusivamente a MySQL. Questo significa che se anche la nostra applicazione è stata progettata per comunicare con MySQL possiamo adattarla molto semplicemente, con piccole variazioni del codice, ad altri software. Nello specifico, sono disponibili i driver per i seguenti DBMS: Cubrid, Microsoft SQL Server, Firebird, IBM DB2, Informix Dynamic Server, MySQL, Oracle, ODBC e DB2, PostgreSQL, SQLite, 4D. In sostanza PDO fornisce un livello di astrazione per l'interazione con le basi di dati.

Un confronto tra MySQLi e PDO

La scelta fra le due ultime tecnologie, escludendo quindi le funzioni della prima estensione ormai deprecata, è dettata da diversi fattori, a volte anche solo dalla preferenza per la sintassi dell'una o dell'altra libreria.

È indubitabile, tuttavia, che se il nostro progetto deve essere facilmente compatibile con diversi DBMS, PDO diventa una scelta obbligata. Questo spiega anche perché questa libreria sia largamente utilizzata dai più famosi framework di sviluppo PHP fra i quali Zend, Symfony, Laravel e Yii, che hanno voluto così assicurare agli sviluppatori una maggiore flessibilità sui requisiti software. Un altro vantaggio di tipo sintattico dato da PDO è la possibilità di assegnare dei nomi ai parametri indicati nelle prepared statements (come vedremo più avanti), senza dover utilizzare il formalismo meno intuitivo di MySQLi basato sui segnaposto (placeholders).

Il confronto fra le due soluzioni è fonte di numerose discussioni in Rete fra programmatori. Nonostante PDO si stia confermando come lo standard di riferimento, l'estensione viene a volte criticata per essere leggermente meno performante di MySQLi, e per non avere accesso diretto ad alcune caratteristiche delle ultime versioni di MySQL come i multiple statements.

Mostreremo entrambe le librerie in azione, partendo da MySQLi, svolgendo i compiti più comuni di una applicazione Web, tra i quali la connessione al database, le operazioni di lettura e scrittura, e la gestione dei dati tramite i form.

Fra i requisiti per poter seguire al meglio la guida, oltre ad una base di PHP e di MySQL, dobbiamo includere anche la conoscenza della programmazione ad oggetti, indispensabile per poter interagire al meglio sia con MySQLi sia con PDO.

Ti consigliamo anche