Follow me on Twitter Facebook Flickr Subscribe Feeds
 

PHP: Guida pratica all’estensione mysqli – parte 1

This entry was posted on October 23rd, 2009 and is filed under mysql, php.

Il MySQL è sicuramente il DBMS più utilizzato al momento. I suoi punti di forza sono tanti e, uno dei più importanti è la velocità di esecuzione delle query. La coppia PHP-MySQL vanta ormai un monopolio nel web che va avanti da anni e, effettuare una connessione tra i due linguaggi è sicuramente qualcosa di molto semplice.

Un codice come il seguente realizza una semplice connessione e una query al database restituendo i valori di cui abbiamo bisogno.

//creazione connessione e scelta db
$conn = mysql_connect('host','user','pass')
        or die('Impossibile stabilire una connessione');
mysql_select_db('db');

//esecuzione query
$query = "SELECT * FROM table";
$result = mysql_query($query, $conn);

//stampa risultati
while ($row = mysql_fetch_array($result)) {
 echo $row['field'];
}

//chiusura connessione
mysql_close($conn);

Fin qui nulla di nuovo. Bene o male tutti noi abbiamo avuto almeno una volta a che fare con queste poche righe di codice.

Molti però non conoscono un’estensione PHP, chiamata mysqli, che possiede numerosi vantaggi rispetto alla più famosa è diffusa mysql.

La “i” contenuta nel nome della libreria sta per improved, ovvero migliore. La creazione dell’estensione infatti è dovuta all’illeggibilità che il codice della precedente libreria aveva raggiunto e che ha quindi costretto a creare ex-novo una libreria più performante.

Caratteristica fondamentale di tale libreria è l’orientamento ad oggetti, caratteristica che ben si sposa con le ultime versioni del php che supportano sempre meglio l’OOP.

Chi ha esperienze con la programmazione Servlet in Java conoscerà bene il concetto di prepared statement. Con tale termine si intende la “preparazione” e il caricamento delle query prima che esse vengano effettivamente richiamate. Tale caratteristica è un’altra innovazione che apporta la libreria mysqli.

Ultima caratteristica che voglio menzionare è la sicurezza, sicuramente migliorata in maniera considerevole rispetto alla vecchia estensione.

Le innovazioni sono tante e per maggiori informazioni rimando alla pagina ufficiale della documentazione PHP. Lo scopo di questo articolo invece è di avvicinarci a questa estensione per conoscerla e sfruttarne in pieno le potenzialità.

I metodi contenuti nella classe sono gli stessi della vecchia estensione soltanto con funzionamento e parametri differenti. L’utilizzo della libreria può essere sia procedurale che orientata agli oggetti ma, visto il supporto completo che il PHP supporta ad oggi dell’OOP, non vedo particolari utilità nell’usare ancora un approcio procedurale.

Con l’articolo di oggi mi soffermerò soltanto sulla connessione al database illustrando le differenze con la vecchia estensione, lasciando le restanti funzioni al prossimo articolo.

Connessione al database

Differentemente dalla libreria mysql, la nuova mysqli ha bisogno semplicemente dell’istanziazione della classe per effettuare la connessione con l’approcio ad oggetti. Niente più quindi connessione al MySQL e successivamente scelta del database ma un unico metodo con tutti i parametri.

Approcio Object Oriented

//creazione oggetto $conn con i dati del db
$conn = new mysqli('host', 'user', 'pass', 'db');

//verifica errore di connessione
if( $conn->connect_error )
   die( "Error: " . $conn->connect_error );

//chiusura connessione
$conn->close();

Approcio Procedurale

//creazione connessione e scelta db
$conn = mysqli_connect('host', 'user', 'pass', 'db');

//verifica errore di connessione
if( !$conn )
   die( "Error: " . mysqli_connect_error );

//chiusura connessione
mysqli_close($conn);

Come si è potuto notare nell’approcio procedurale, invece, i metodi hanno i medesimi nomi della libreria mysql ma parametri e funzionamento sono differenti. Niente più metodo di scelta del database ma l’aggiunta di un parametro nella funzione di connessione. I restanti metodi invece non presentano modifiche rispetto alla vecchia versione.

Per oggi chiudo qui l’articolo per non renderlo troppo lungo. Nella parte successiva mi occuperò delle query al database.

Alla prossima :)

Ps. Un doveroso grazie va all’utente Blanks che mi ha dato lo spunto per questo articolo e i prossimi che seguiranno su questa estensione. ;)

Pixmac
Like this post? Share It! :)
Navigation:
Related Posts:
Comments

Comments are closed.