Da MySQL a MySQLi

Blog, psicoterapia autogena di un web designer freelance

Da MySQL a MySQLi - 04/02/2015
04/02/2015

Milioni di siti presenti online sono scritti utilizzando PHP e MySQL ma già da tempo il team di PHP ha annunciato l'intenzione di deprecare tutte le funzioni MySQL. La notizia è stata ufficializzata nella pagina introduzione a MySQL del sito php.net con questa dichiarazione: This extension is deprecated as of PHP 5.5.0, and is not recommended for writing new code as it will be removed in the future. Instead, either the mysqli or PDO_MySQL extension should be used. Ci dicono quindi che non è consigliato proseguire nell'utilizzo delle funzioni MySQL ma iniziare a utilizzare le due alternative proposte ovvero MySQLi (i sta per improved) e PDO (PHP Data Objects). Naturalmente è prevista una retro compatibilità che garantirà per i prossimi anni la corretta visualizzazione dei siti esistenti ma prima o poi le funzioni verranno definitivamente rimosse. In questo articolo ci occupiamo di MySQLi (di PDO abbiamo già parlato tempo addietro); vediamo innanzitutto i vantaggi. In primis la possibilità di sfruttare un approccio basato sul paradigma object oriented (OOP) oltre a una migliore ottimizzazione delle prestazioni grazie al supporto per le prepared statements, istruzioni SQL precedentemente utilizzate e mantenute in cache per successive chiamate. Le nuove funzionalità sono elencate nel sito ufficiale di php e ci mostrano chiaramente due differenti approcci possibili: il metodo procedurale, ovvero lo stesso identico metodo di prima dove andiamo a gestire le funzioni MySQL tali e quali ma come MySQLi; in parole povere una funzione come mysql_query diventa semplicemente mysqli_query con però l'aggiunta della variabile con i parametri di connessione. Mi sento di sconsigliare questa possibilità e buttarci direttamente al metodo OOP che è anche quello raccomandato; una connessione al database passa quindi per l'istanza di una classe (es: $mysqli = new mysqli(DB_HOST, DB_USER, DB_PSW, DB_NAME);). Come possiamo notare il parametro che contiene il nome del database viene passato direttamente al costruttore senza più la necessità di utilizzare la funzione mysql_select_db. A questo punto una query viene eseguita, come è logico supporre, in maniera differente (es: $query = $mysqli->query($sql);). Il passaggio non è ne traumatico ne complesso, la pratica farà il resto. Nel prossimo articolo parleremo di un metodo molto interessante per gestire le icone nei nostri siti web. E adesso da bravi programmatori sempre al passo coi tempi, non ci rimane che far nostre le nuove procedure.